MATLAB:在For循环中绘图

时间:2016-12-27 07:23:29

标签: matlab

请原谅我的无知,但我似乎无法理解如何在简单的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)。所以基本上我有一组点,我试图绘制,然后连接一条线,但我似乎无法弄清楚如何绘制这个。

再一次,这个问题似乎非常简单,但我非常感谢任何帮助。

1 个答案:

答案 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-')

enter image description here

希望这有帮助,

Qapla'