How can I store a matrix of varying size in each iteration of a for loop?

10 Ansichten (letzte 30 Tage)
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:
Screenshot 2019-08-02 at 14.43.19.png

Akzeptierte Antwort

Jos (10584)
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)
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) ;
madhan ravi
madhan ravi am 2 Aug. 2019
Note: Preallocating variables is important.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

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!

Translated by