Creating new variable in a subfunction .m file
Mostrar comentarios más antiguos
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
Respuesta aceptada
Más respuestas (1)
per isakson
el 20 de Jun. de 2016
Editada: per isakson
el 20 de Jun. de 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 comentarios
Wei Nick Chan
el 20 de Jun. de 2016
per isakson
el 20 de Jun. de 2016
Editada: per isakson
el 20 de Jun. de 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
el 20 de Jun. de 2016
Editada: per isakson
el 20 de Jun. de 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.
Categorías
Más información sobre Workspace Variables and MAT Files en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!