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

10 vues (au cours des 30 derniers jours)
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

Réponse acceptée

Jos (10584)
Jos (10584) le 2 Août 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 commentaires
Jos (10584)
Jos (10584) le 2 Août 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 le 2 Août 2019
Note: Preallocating variables is important.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by