How can I store a matrix of varying size in each iteration of a for loop?
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Mathushan Sabanayagam
am 2 Aug. 2019
Kommentiert: madhan ravi
am 2 Aug. 2019
Hi,
I have a function that gives an output of a single column, T, and also a matrix Y. The number of columns of Y remains constant but the number of rows changes depending on the input parameter. The number of rows of T also changes depending on the input parameter.
for rho = 500:100:1000
[T Y]= myFunction(rho)
end
I am varying the parameter rho from 500 to 1000, however want to store each iteration in a separate matrix, as I wish to compare the outputs at different rho values. Currently, although all matrix outputs appear in the command window, I cannot store each iteration for further use, only the last iteration at rho=1000 is accessible. I was wondering how this would be possible? Thank you very much for any help as I am a beginner to Matlab.
An example of the output in the command window for one value of rho inputted:
0 Kommentare
Akzeptierte Antwort
Jos (10584)
am 2 Aug. 2019
Since T and Y are related for a specific value of rho, a struct array is useful here.
rho_range = 500:100:1000 ;
for k = 1:numel(rho_range)
rho = rho_range(k) ;
[data(k).T data(k).Y]= myFunction(rho) ;
end
You might want to pre-allocate the struct array to speed things up. One easy way to do this is to reverse the loop:
for k = numel(rho_range):-1:1
3 Kommentare
Jos (10584)
am 2 Aug. 2019
My pleasure. Unfortunately, user madhan ravi deleted his answer, as cell arrays are a good option too.
[T{k}, Y{k}] = myFunction(rho) ;
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!