Saving each vector of an ode45 vector solution in a matrix.
Mostrar comentarios más antiguos
I have the following code, where I am using a different value of a parameter G in my ODE system (solving it w/ ode45) and want to plot each solution on the same graph. It isnt the same as IC's, as these are the same but the parameter varies. Currently I have:
for i=1:20
G=i/20 %Saving that iterates value of G
[phi,y]=ode45(@(phi,y) odefun(phi,y,G), timerange, IC);
z(i,;)=y %
end
then I want to save all these y's without creating 20 vectors. Is there a way to save each vector y as a column of a matrix? I am very lost and any direction would be very helpful, I cannot find a thread or anythign on the helpcenter.
Thanks in advance
3 comentarios
James Tursa
el 26 de Abr. de 2021
y will be output as a column vector for scalar problems, or a matrix for more than 1D problems. Which situation do you have? I.e., what is size(y)?
J. Alex Lee
el 27 de Abr. de 2021
Another important question is if "timerange" are just the 2 point limits of time, or a vector; if just the limits, each version may produce different length of y (even if it was 1D problem). In such a case, you couldn't [easily] use a matrix to store the results anyway.
Gabriel Venter
el 27 de Abr. de 2021
Respuestas (1)
J. Alex Lee
el 27 de Abr. de 2021
Editada: J. Alex Lee
el 27 de Abr. de 2021
Use a cell array instead
z = cell(1,20)
for i=1:20
G=i/20 %Saving that iterates value of G
[phi,y]=ode45(@(phi,y) odefun(phi,y,G), timerange, IC);
z{i}=y %
end
Or better yet just use the solution structure version of output
for i=20:-1:1
G=i/20 %Saving that iterates value of G
sol(i) = ode45(@(phi,y) odefun(phi,y,G), timerange, IC);
end
2 comentarios
Gabriel Venter
el 27 de Abr. de 2021
J. Alex Lee
el 27 de Abr. de 2021
glad it helped!
"20:-1:1" is going backwards, so the pre-allocation of the structure array is implied. Didn't need to do it with the cell array version since it was straightforward to pre-allocate an empty cell array. You could loop backward on that example as well, and wouldn't need to do the explicit pre-allocation.
Categorías
Más información sobre Programming 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!