[MatLab] problema in matab
ciao a tutti, ho creato un ciclo for in matlab per calcolarmi una serie di matrici ( i matrici 2x2 per i che va da 1 a 1000 per esempio) , il problema è che con il loop praticamente viene salvata solamente l'ultima matrice calcolata, mentre le altre vanno perse. Esiste un modo per tenere salvate tutte le matrici che mi calcolo con l'algoritmo, per ogni i?
vi faccio un esempio semplice:
for i = 1:2000
Q = (1 - a - b) * qbar + a * ( Ret_star(1,i-1) *Ret_star1(i-1,1) ) ;
end
tralasciando il significato di Ret_sta e qbar, in questo modo dovrei crearmi 2000 matrici Q che sono 2x2, però mi viene salvata solo l'ultima calcolata con i = 2000, come faccio a salvarle tutte e a porre un indice, tipo come si fanno con gli scalari dove metti a(i) e ti crea i scalari?
vi faccio un esempio semplice:
for i = 1:2000
Q = (1 - a - b) * qbar + a * ( Ret_star(1,i-1) *Ret_star1(i-1,1) ) ;
end
tralasciando il significato di Ret_sta e qbar, in questo modo dovrei crearmi 2000 matrici Q che sono 2x2, però mi viene salvata solo l'ultima calcolata con i = 2000, come faccio a salvarle tutte e a porre un indice, tipo come si fanno con gli scalari dove metti a(i) e ti crea i scalari?
Risposte
Forse va anche su matlab!!!
octave-3.2.4:9>M = cell(1,5) octave-3.2.4:9> for i = 1:5 > M(1,i) = [i i; i i] > end octave-3.2.4:10> M(1,3)
Puoi creare una matrice in 3 dimensioni e aggiungere a ogni iterazione la matrice.
a=zeros(m,n,l)
%m,n sono le dimensioni della singola matrice e l è la terza dimensione ovvero il numero di matrici che vuoi salvare
for i=1:2000
Q = (1 - a - b) * qbar + a * ( Ret_star(1,i-1) *Ret_star1(i-1,1) ) ;
a(:,:,i)=Q
end
a=zeros(m,n,l)
%m,n sono le dimensioni della singola matrice e l è la terza dimensione ovvero il numero di matrici che vuoi salvare
for i=1:2000
Q = (1 - a - b) * qbar + a * ( Ret_star(1,i-1) *Ret_star1(i-1,1) ) ;
a(:,:,i)=Q
end