[英]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.