Creating new variable in a subfunction .m file
Afficher commentaires plus anciens
Here's the case, I have one main matlab file (main.m) and another sub matlab file (sub.m)
And I need to loop over main.m multiple times to execute sub.m, is it possible to create a new array containing the output of the sub.m? Or I must have a global variable declared and include it in the function
Let this be the case:
First loop:
A=[1 2 3 4 5];
Second loop:
A=[2 8 5 9 6];
Nth loop:
A=[x x x x x];
I need to create an array in the subfunction so that it is able to recognize and store all the maximum of As in the loop
Max_A=
5
9
.
.
N
Réponse acceptée
Plus de réponses (1)
per isakson
le 20 Juin 2016
Modifié(e) : per isakson
le 20 Juin 2016
No globals needed. Try
%%in main
R = nan( N, 5 ); % pre-allocate memory
for jj = 1 : N
R(jj,:) = sub();
end
I don't get the last part. Why not simply add after the loop
max_A = max( R, 2 );
3 commentaires
Wei Nick Chan
le 20 Juin 2016
per isakson
le 20 Juin 2016
Modifié(e) : per isakson
le 20 Juin 2016
"instead of overwriting each other"   the code I proposed doesn't overwrite.
If the problem is that R outgrows the physical memory (RAM), then you need to store to a file.
per isakson
le 20 Juin 2016
Modifié(e) : per isakson
le 20 Juin 2016
- "particular function"   I assume that's sub
- Is max values from previous calls used in sub? If so, sub has state. You could use a persistent variable to keep previous max values. However, there must be a better way.
Catégories
En savoir plus sur Workspace Variables and MAT Files dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!