Matlab - grabar matrices sucesivas

 
Vista:

grabar matrices sucesivas

Publicado por Sandra (3 intervenciones) el 09/07/2006 01:17:00
Hola
Necesito ayuda. Lo siguiente es parte de un programita en matlab que estoy tratando de hacer. En cada bucle o ciclo "i" se genera una matriz "P". Quiero guardar cada una de las P de cada ciclo porque despues tengo que recuperarlas y multiplicarlas. El problema es que si pongo save solo se grava la última matriz generada, es decir se reemplaza en cada ciclo, no se agrega una tras la otra que es lo que quisiera.

%va= es un vector de 150 elementos
AB=7.5
for i=1:2
['Ciclo ', num2str(i)]
for j=1:8
['Subciclo', num2str(j)]
n=1:150;
KS=0.98;
aS=0.74;
bS=0.34;
cS=0.01;
SM(n)=(KS*(1-aS*exp(-bS*n)))/(1+cS*AB);

for g=r:150
KF=650.87;
aF=14.36;
bF=0.94;
cF=0.55;
FM(g)=round(KF/(AB*(1+exp((aF-(bF*g))/(1+cF*AB)))));
end
M(1,1:150)= FM;
M=SPDIAGS(SM',-1,M);
P=full(M);
vd=P*va;
M=P;
va=vdr;
end
end

Ojalá puedan ayudarme! me falta muy poquito para terminar la tesis y esto me esta trabando hace un monton de tiempo.
GRACIAS
Sandra
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
sin imagen de perfil

RE:grabar matrices sucesivas

Publicado por Raúl Santiago (211 intervenciones) el 11/07/2006 11:34:19
Claro que te va a hacer eso, es una matriz de dos dimensiones, te va guardar una de dos, lo que puedes creas es una de tres dimensiones y cada vez vas la tomas y al final de bucle la guardas, con eso ya tienes todas las matrices, algo así

P2(g,:,:)=P;
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:grabar matrices. MAS AYUDA

Publicado por Sandra (3 intervenciones) el 15/07/2006 02:54:40
Hola
Buenisima la sugerencia de Raúl. Pero ahora necesito más ayuda!. Ahora tengo las 16 matrices (generadas en los ciclos i y j) no se como tener a cada una por separado. Lo que sigue del modelo que les presenté es multiplicar entre sí cada una de las 8 matrices generadas en cada ciclo i y hacer un estudio de su sensibilidad y elasticidad.
Muchas gracias
sandra
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
sin imagen de perfil

RE:grabar matrices. MAS AYUDA

Publicado por Raúl Santiago (211 intervenciones) el 27/07/2006 10:30:20
Solo es tomar en cada punto, en un ciclo o la que necesites en el momento, pones el i o el j y en las otras dimensiones dos puntos (:)

Algo así

a(1,:,:)

a(2,:,:)
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:grabar matrices sucesivas

Publicado por nazareno (14 intervenciones) el 17/11/2009 02:03:30
hola chicos, abro este hilo viejo porq estoy tratando de hacer algo parecido.
tengo varios bucles uno dentro del otro. el de afuera varia de (e) 1:3 y los dos de adentro (i,j) 1:2. por cada vez q se completa el bucle de afuera (e) se me forma una matriz de 8x8. por lo tanto voy a terminar teniendo 3 matrices de 8x8.
como hago para q me guarde esas tres matices? la parte del codigo q trata esto es esta:

for e=1:size(nl,1)
for i=1:size(r,2)
for j=1:size(s,2)
dh1r=1/4*(1+s(j)); dh1s=1/4*(1+r(i));
dh2r=-1/4*(1+s(j)); dh2s=1/4*(1-r(i));
dh3r=-1/4*(1-s(j)); dh3s=-1/4*(1-r(i));
dh4r=1/4*(1-s(j)); dh4s=-1/4*(1+r(i));
dh=[dh1r dh2r dh3r dh4r;
dh1s dh2s dh3s dh4s];
jacov=dh*[pg(1,nl(e,:));pg(2,nl(e,:))]';
invj=inv(jacov);
b1=[invj(1,1) invj(1,2) 0 0;
0 0 invj(2,1) invj(2,2);
invj(2,1) invj(2,2) invj(1,1) invj(1,2)];
b2=[dh1r 0 dh2r 0 dh3r 0 dh4r 0;
dh1s 0 dh2s 0 dh3s 0 dh4s 0;
0 dh1r 0 dh2r 0 dh3r 0 dh4r;
0 dh1s 0 dh2s 0 dh3s 0 dh4s];
b=b1*b2;
end
end
k(e)=k0+b'*c*b*det(jacov)*a1(i)*a2(j)
end

la idea es terminar con 3 matrices k(e) q son de 8x8, pero no logro encontrar la manera de hacerlo.
alguien sabe como?
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