I also used 'all_x{tid}=x;' right after [t,x] = ode45(dxdt, tspan, x1);, but every 'all_x{tid}=x' has the same values for (x1,x2)
double forloop and plotting
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Junhwi Mun
le 9 Juin 2020
Modifié(e) : madhan ravi
le 12 Juin 2020
Hi, I’m stuck on using ‘double forloop’
I got each ’all_K_db{i}’ corresponding to ‘e_1value’
and I want to get solutions and plot them in a (time, state x) graph.
As there are 5 values for ’all_K_db{i}’ and 2 values for ‘x=(x1,x2)’, 10 lines should exist on a plot. How can I show all the lines in one graph?
even if the code doesn't make any error, I can't check all(10lines) values of x=(x1,x2), I only see 2lines
%Figure2-2,data-based
e_1value=0.01:0.5:2.01;
numb_t = length(e_1value);%5
x1=[1; 1];
tspan = (1:2:15);
for tid=1:2:15
for i=1:numb_t
A= [0.2, 1.3; 0.1, 1.2];
B= [1; 2];
D= [0.45 0.45; 0.3 -0.3];
dxdt =@(t,x) A*x+ B*(all_K_db{i})*x+ D*x*(all_K_db{i})*x;
end
[t,x] = ode45(dxdt, tspan, x1);
end
2 commentaires
Réponse acceptée
Ayush Gupta
le 12 Juin 2020
Modifié(e) : madhan ravi
le 12 Juin 2020
The problem is here that you are overwriting values when you use
[t,x] = ode45(dxdt, tspan, x1);
As this line is outside of the second loop, only one dxdt value is returned and since the first/outside loop runs one time, it stores only 2 values and therefore you can see only 2 lines instead of 10. Correct version of this will be the following:
%Figure2-2, data-based
e_1value=0.01:0.5:2.01;
numb_t = length(e_1value);%5
x1=[1; 1];
tspan = (1:2:15);
for tid=1:2:15
for i=1:numb_t
A= [0.2, 1.3; 0.1, 1.2];
B= [1; 2];
D= [0.45 0.45; 0.3 -0.3];
dxdt =@(t,x) A*x+ B*(all_K_db{i})*x+ D*x*(all_K_db{i})*x;
[t,x] = ode45(dxdt, tspan, x1);
end
end
0 commentaires
Plus de réponses (0)
Voir également
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!