Storing Multiple Matrices from a For Loop

How do I index and store multiple matrices as a run through a for loop? For instance, I generate a 10x10 matrix the first time through and I want to store this result for access later before proceeding to the next matrix generation.

 Akzeptierte Antwort

Cedric
Cedric am 7 Apr. 2013
Bearbeitet: Cedric am 7 Apr. 2013

46 Stimmen

You can use a cell array, e.g
n = 10 ;
M = cell(n, 1) ;
for k = 1 : n
M{k} = 20*k + rand(10) ;
end
you can see that each
M{1}, M{2}, etc
is a the 10x10 matrix defined at a specific iteration of the loop.
Note the difference between regular block indexing with () and accessing cells content with {}:
M(1)
is cell #1 of the cell array M, whereas
M{1}
is the content of cell #1 (in the present case, it is a 10x10 matrix).

15 Kommentare

Anthony Uwaechia
Anthony Uwaechia am 17 Aug. 2015
this is actually an intelligent way of saving matrix from loop iterations. thanks a lot. it really solved my problem
Amazing.Thanks
Can I save m{k} to .mat file?
@Alvina Khairun Nisa: allocate it to a temporary variable and save that, e.g.:
for k = 1:N
data = m{k};
fnm = sprintf('file_%d.mat',k);
save(fnm,'data');
end
Irfan Azhar
Irfan Azhar am 2 Jan. 2018
very helpful. thanks indeed.
Thanks a lot.
Redouane Bouchou
Redouane Bouchou am 7 Apr. 2020
thank you , that was very helpfeul
Himanshu Banait
Himanshu Banait am 13 Jul. 2020
Thanks a lot.
many thanks
mary john
mary john am 31 Dez. 2020
thanks a lot
Marcio Pereira
Marcio Pereira am 21 Mär. 2021
Very good! Grateful!
You´re the real MVP, man! Thx a lot for this approach!
Ali Berenjian
Ali Berenjian am 3 Apr. 2022
thanks a lot!
Bryan Guilcapi
Bryan Guilcapi am 20 Jul. 2022
Hi, i have a question, is possible to plot all this cell in one plot calling the data that are inside of the cell?
Walid
Walid am 22 Jul. 2023
thank you

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Saeed Bello
Saeed Bello am 7 Aug. 2017

7 Stimmen

You can use a three-dimensional matrix e.g.
for i = 1:8 % no. of iteration
S(:, :, i) = myfunx(i,10); % 10 x 10 output
end
Then you can access each iteration by calling S(:, : , 1) or S(:, : , 2) or S(:, : , 3) and so on. Source:https://stackoverflow.com/questions/30036908/output-of-for-loop-as-a-matrix-matlab

3 Kommentare

Irfan Azhar
Irfan Azhar am 2 Jan. 2018
many thanks indeed.
ELIAS PERATICOS
ELIAS PERATICOS am 27 Apr. 2018
Saeed Bello, thanks a lot this was very useful.
rees adah
rees adah am 31 Okt. 2018
I also have a similar problem but this solution didn't work for me.i intend to store the matrices coming from a nested for loop into a multidimensional array and reference it later...how do I do that please?

Melden Sie sich an, um zu kommentieren.

D.K. Rao
D.K. Rao am 1 Jul. 2017

0 Stimmen

Thank you very much Cedric Wannaz

Gefragt:

am 7 Apr. 2013

Kommentiert:

am 22 Jul. 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by