double forloop and plotting

1 次查看(过去 30 天)
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 个评论
Junhwi Mun
Junhwi Mun 2020-6-9
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)
Rik
Rik 2020-6-9
You are overwriting all your results in each loop.

请先登录,再进行评论。

采纳的回答

Ayush Gupta
Ayush Gupta 2020-6-12
编辑:madhan ravi 2020-6-12
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 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by