Matlab - Rotar vectores en una operación.

   
Vista:

Rotar vectores en una operación.

Publicado por Ricardo (124 intervenciones) el 23/01/2018 18:25:38
Buenos días.
Esperando su ayuda.

Tengo los siguientes vectores; A0, A1 y A2 y cada uno lo tengo que multiplicar por el vector B
¿ Que coligo realizo para que el MatLab lo haga automático?

1
2
3
4
5
6
7
8
9
clc;  clear;  close all
 
A0=[2 4 6 ];
A1=[3 6 9 ];
A2=[1 2 3 ];
 
B=[2 2 2 ];
 
C=A0.*B

gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Daniel

Rotar vectores en una operación.

Publicado por Daniel (261 intervenciones) el 23/01/2018 19:55:09
Tienes varias maneras según como quieras obtener C, si quieres mantener todos los resultados y que operaciones deseas realizar luego:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clc
A0=[2 4 6 ];
A1=[3 6 9 ];
A2=[1 2 3 ];
 
B=[2 2 2 ];
% el valor de C se va actualizando en cada ciclo
for n=0:2
eval(['C=A' num2str(n) '.*B'])
end
% se generan C0, C1,...Cn variables
for n=0:2
eval(['C' num2str(n) '=A' num2str(n) '.*B'])
end
% se genera un matriz C donde cada fila corresponde a cada operacion
for n=0:2
eval(['C(' num2str(n+1) ',:)=A' num2str(n) '.*B'])
end

En cualquiera de los casos el comando eval agarra un string y lo ejecuta como si fuese una linea de código. Resulta bastante útil en algunos casos, aunque generalmente se usa cuando el codigo no esta "muy bien escrito". Que quiero decir con esto.. Porqué hay variables A0,A1,....An pudiendo tenerlas todas guardas en una matriz A donde cada fila corresponda a A0 A1...?


Te recomendaría que veas de no tener tantas variables distintas que poseen la misma estructura (en este caso A0,A1,A2...)

Intentaria tener una matriz A que en cada fila, por ejemplo, tenga las variables A0,A1,A2 asi gran parte de las cuantas e iteraciones se pueden simplificar. Matlab esta particularmente orientado a ello

si tuvieses A=[A0;A1;A2]; entonces podrias obtener todos los resultados sin usar un ciclo for y sin usar eval:

1
2
A=[A0;A1;A2];
C=A.*repmat(B,size(A,1),1);

Comentanos como te fue

Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Rotar vectores en una operación.

Publicado por Ricardo (124 intervenciones) el 23/01/2018 21:59:36
Muchísimas gracias por su ayuda.
Funciono el código que me proporciono.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Rotar vectores en una operación.

Publicado por Ricardo (124 intervenciones) el 24/01/2018 03:36:58
Muchísimas gracias por su ayuda.
Funciono el código que me proporciono.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad