2016-12-27 6 views
0

Простите мое невежество здесь, но я не могу понять, как строить данные внутри простого цикла MATLAB. В настоящее время у меня есть следующее:MATLAB: Участок внутри петли

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 

Я пытаюсь построить R_0 по e. Цикл for работает в том, что для каждого значения e (0, затем .01, затем .02, до 2) код дает мне значения для R_0 (1.1049, затем 1.0138, затем 0,9365, до 0,3949). Так что в основном у меня есть группа точек, которые я пытаюсь построить, а затем подключиться к линии, но я не могу понять, как это сделать.

Еще раз, этот вопрос кажется чрезвычайно простым, но я бы очень признателен за любую помощь.

ответ

1

Сначала вы должны собрать значения R_0 в каждой итерации (в текущей версии вашего кода вы заменяете значение на каждой итерации).

Чтобы сохранить все значение, вы должны использовать массив R_0 и ввести счетчик, который должен быть увеличен в цикле; то вы можете использовать функцию plot для построения данных.

В следующем коде вы можете увидеть:

инициализации контер cnt

его приращение на каждом itaration

использование функции 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»

+0

Спасибо. Так же, как и последующие вопросы, если бы я должен был добавить строку к графику при y = 1 (как показано здесь: https://i.stack.imgur.com/fO7sc.jpg), что было бы лучшим способом найти это пересечение – Dibbs

+0

Кстати, это мой код – Dibbs

+0

Извините, я продолжаю нажимать enter; graph1 = plot ([0: .01: .2], R_0) hold on graph2 = plot (xlim, [1 1]) – Dibbs