Matlab - Consulta comando FOR

 
Vista:

Consulta comando FOR

Publicado por Pablo (8 intervenciones) el 14/08/2007 16:48:43
Hola, mi consulta es muy simple, propia de alguien que lleva recién unos pocos días familiarizándose con Matlab.

Tengo la siguiente instrucción, previamente ya definí las matrices A y B:

n=10
for i=1:n
A^i*B
ans(1,2)
end

Lo que necesito es rescatar el coeficiente (1, 2) que se va obteniendo para cada valor de i, para luego tener cada uno de esos 10 coeficientes (n=10) pasarlos a un vector.

¿Cómo lo consigo?

Muchas gracias!

Pablo
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

RE:Consulta comando FOR

Publicado por fismat (391 intervenciones) el 14/08/2007 22:13:16
Hola Pablo

prueba con el siguiente ejemplo:

A=rand(3,3);

B=magic(3);

n=10;

for i=1:n
C=A.^(i*B);
vec(i)=C(1,2);
end

plot(vec)

Espero sea de ayuda.
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

RE:Consulta comando FOR

Publicado por Pablo (8 intervenciones) el 15/08/2007 04:00:13
Gracias Fismat por tu respuesta.

Mi pregunta surgió para encotnrar una manera más breve para hacer dicho cálculo, que lo hacía por separado para cada valor de i, y rescatando de cada iteración el coeficiente (1,2) y luego formando el vector. Obviamente, el programa era bastante largo si usaba un i grande.

Para comprobar si tu programa trabajaba bien, formé el vector con las matrices de tu ejemplo bajo mi modalidad larga y tediosa, y luego usé tu programa, pero los resultados diferían. Lo probé para los datos que estaba usando, y también difería de lo que encontré bajo mi modalidad (que por cierto, me permitía replicar correctamente los resultados de un libro).

Lo que hice fue lo siguiente:

A=rand(3,3);

B=magic(3);

n=10;

for i=1:n
C=A^i*B; -----------> ACÁ ESTÁ EL CAMBIO
vec(i)=C(1,2);
end

plot(vec)

Puse la instrucción similar a la que tenía, pues es la matriz A la que se eleva a i, y luego el resultado se multiplica por B. Lo que no sabía era el uso de vec(i) = C(1,2).

¿Qué uso tiene poner un punto por delante de la matriz?

Agradezco mucho tu ayuda, pues me permite tener una rutina sin duda más elegante.

Saludos,

Pablo
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

RE:Consulta comando FOR

Publicado por fismat (391 intervenciones) el 15/08/2007 18:01:06
Hola Pablo

Me da mucho gusto saber que el codigo es de utilidad.

respecto a tu consulta del uso del punto,

se utiliza el punto para operaciones denominadas elemento a elemento

te sugiero ver los siguientes ejemplos

a=magic(3);
b=magic(3);

c=a*b;
d=a.*b;
e=a/b;
f=a./b;
g=a.^(b);
h=a^(b);

Espero se entienda las dieferencias en el uso del punto.

Saludos
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

RE:Consulta comando FOR

Publicado por fismat (391 intervenciones) el 15/08/2007 18:07:08
Algo que estaba olvidando es el comando rand produce una matriz con valores aleatorios, el tamaño de dicha matriz depende los argumentos y en cada operacion produce valores distintos, por ejemplo:

a=rand(1); 1 elemento 1D
b=rand(10); 10 elementos 1D
c=rand(2,5); 2x5 = 10 elementos 2D
d=rand(4,5,3); 4x5x3 = 60 elem 3D

Saludos
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

RE:Consulta comando FOR

Publicado por Pablo (8 intervenciones) el 15/08/2007 22:08:09
Hola Fismat, excelente la explicación. Me he conseguido un manual de Matlab, así es que aprendo rápidamente. Todas estas consultas tan básicas han sido porque necesito dar el salto y estimar un intervalo de confianza a partir de una serie de datos (bootstrap, Monte Carlo y esas cosas). En esto no te pido que me pidas cómo se hace, pero si me indicas dónde puedo buscar algún tipo de ayuda, te estaré muy agradecido.

Muchos saludos!

Pablo
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

RE:Consulta comando FOR

Publicado por fismat (391 intervenciones) el 14/08/2007 22:13:34
Hola Pablo

prueba con el siguiente ejemplo:

A=rand(3,3);

B=magic(3);

n=10;

for i=1:n
C=A.^(i*B);
vec(i)=C(1,2);
end

plot(vec)

Espero sea de ayuda.
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