簡體   English   中英

MATLAB:在For循環中繪制

[英]MATLAB: Plot inside a For Loop

請原諒我的無知,但我似乎無法理解如何在簡單的MATLAB for loop中繪制數據。 我目前有以下內容:

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)。 因此,基本上我有一組要嘗試繪制的點,然后與一條線連接,但是我似乎無法弄清楚如何繪制此點。

再一次,這個問題似乎非常簡單,但是我將不勝感激。

首先,您必須在每次迭代中收集R_0值(在當前版本的代碼中,您在每次迭代時都覆蓋了該值)。

要保存所有值,您必須使用R_0一個數組並引入一個要在循環中遞增的計數器; 然后您可以使用plot功能來繪制數據。

在以下代碼中,您可以看到:

在康特的初始化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-')

在此處輸入圖片說明

希望這可以幫助,

卡普拉

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM