2016-12-27 12 views
0

Verzeihen Sie meine Ignoranz hier, aber ich kann nicht zu verstehen scheinen, wie man Daten in einer einfachen MATLAB for-Schleife plotten kann. Ich habe derzeit folgendes:MATLAB: In eine For-Schleife plotten

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 

Ich versuche, R_0 in Bezug auf e zu plotten. Die for-Schleife arbeitet darin, dass für jeden Wert von e (0, dann .01, dann .02 bis 2) der Code mir Werte für R_0 (1.1049, dann 1.0138, dann .9365, bis .3949) gibt. Im Grunde genommen habe ich eine Gruppe von Punkten, die ich versuche zu plotten und dann mit einer Linie zu verbinden, aber ich kann mir nicht vorstellen, wie ich das aufzeichnen soll.

Noch einmal scheint diese Frage sehr einfach, aber ich würde jede Hilfe sehr schätzen.

Antwort

1

Zunächst müssen Sie die Werte R_0 in jeder Iteration erfassen (in der aktuellen Version Ihres Codes überschreiben Sie den Wert bei jeder Iteration).

Um den gesamten Wert zu speichern, müssen Sie R_0 ein Array verwenden und einen Zähler einführen, der in der Schleife inkrementiert wird; Dann können Sie die plot Funktion verwenden, um die Daten zu plotten.

Im folgenden Code können Sie sehen:

die Initialisierung des conter cnt

seinen Zuwachs an jedem itaration

die Verwendung der plot Funktion nach der Schleife

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

hoffe, das hilft,

+0

Thanks ‚Qapla. Als Follow-up-Fragen, wenn ich eine Zeile zu y = 1 hinzufügen würde (wie hier gezeigt: https://i.stack.imgur.com/fO7sc.jpg), wäre das der beste Weg finden Sie diese Kreuzung – Dibbs

+0

Übrigens ist dies mein Code – Dibbs

+0

Sorry, ich drücke weiter Enter; graph1 = plot ([0: .01: .2], R_0) halten graph2 = plot (xlim, [1 1]) – Dibbs