请原谅我的无知,但我似乎无法理解如何在简单的MATLAB for循环中绘制数据。我目前有以下内容:
sigma=[.9 .9250 .95 .95];
gamma=[1 .0784 .54 .4862];
F=[0 0 .25 0;0 0 0 0;0 0 0 0;0 0 0 0];
for e=0:.01:.2
R_0=max(eig(F*inv((eye(4)-[sigma(1)*(1-gamma(1)) 0 0 0;...
sigma(1)*gamma(1) sigma(2)*(1-gamma(2)) 0 0;...
0 sigma(2)*gamma(2) sigma(3)*(1-gamma(3))*(1-e) sigma(4)*gamma(4);...
0 0 sigma(3)*gamma(3)*(1-e) sigma(4)*(1-gamma(4))]))))
end
我试图相对于e绘制R_0。 for循环适用于e的每个值(0,然后是.01,然后是.02,直到2),代码给出了R_0的值(1.1049,然后是1.0138,然后是.9365,直到.3949)。所以基本上我有一组点,我试图绘制,然后连接一条线,但我似乎无法弄清楚如何绘制这个。
再一次,这个问题似乎非常简单,但我非常感谢任何帮助。
答案 0 :(得分:1)
首先,您必须在每次迭代中收集R_0
值(在当前版本的代码中,您将在每次迭代时覆盖值)。
要保存所有值,必须使用R_0
数组并引入一个计数器以在循环中递增;然后你可以使用plot
函数绘制数据。
在以下代码中,您可以看到:
conter cnt
每次迭代时的增量
循环后使用plot
函数
sigma=[.9 .9250 .95 .95];
gamma=[1 .0784 .54 .4862];
F=[0 0 .25 0;0 0 0 0;0 0 0 0;0 0 0 0];
% Initialize the counter
cnt=0;
for e=0:.01:.2
% Increment the counter
cnt=cnt+1;
% Use R_0 as an array and store the value of each iteration
R_0(cnt)=max(eig(F*inv((eye(4)-[sigma(1)*(1-gamma(1)) 0 0 0;...
sigma(1)*gamma(1) sigma(2)*(1-gamma(2)) 0 0;...
0 sigma(2)*gamma(2) sigma(3)*(1-gamma(3))*(1-e) sigma(4)*gamma(4);...
0 0 sigma(3)*gamma(3)*(1-e) sigma(4)*(1-gamma(4))]))))
end
% Plot the results
plot([0:.01:.2],R_0,'o-')
希望这有帮助,
Qapla'