2013-11-11 4 views
-1

Я застреваю при инициализации v (0) = 0 и t (0) = 0. Проблема в том, что сначала не создается пустой массив? Ваша помощь очень ценится.Петли в Matlab

T= 0.001; 
C= 0.004; 
n=0; 
k=0; 

v(0)=k; 
t(0)=k; 

while v(n)<60 
     v(n+1)= T.*(A(n)-C.*(v(n)).^2)+v(n); 
     t(n+1)= (n-1)*T; 
     n=n+1; 
end 

n60=n 
t60=(n60-1)*T 

ответ

2

Индексы в Matlab начинают с 1

Поэтому v(0)=k и t(0)=k не являются законными. Вы предпочитаете делать:

v(desired arraysize)=k; 
t(desired arraysize)=k; 

предварительно выделить. и

v(1)=k; 
t(1)=k; 

для инициализации первого значения.


так v(n)<60 также даст вам ошибку.

вы можете написать:

v(1) = 0; 
while v(n) < 60+1 
     v(n+1)= T.*(A(n)-C.*(v(n)).^2)+v(n); 
     t(n+1)= (n-2)*T; %not completetely sure with this line, you should check it again. 
     n=n+1; 
end 

от комментариев:

просто установить т (1) = 0 и v (1) = 0, то просто необходимо пересмотреть с других языков, что индексирование начинается с 1. Это в основном означает, что вы не можете использовать индекс в качестве замены «времени», вам обычно нужен дополнительный вектор времени, который связывает ваши значения с определенным временем.

+0

Таким образом, t является переменной для времени. В момент времени t = 0 скорость (v) должна быть равна 0. Поэтому, если я назову v (0), он отвечает значением. Предполагается, что v (1) оценивается по петле. Так или иначе, чтобы это сделать? – user2521768

+0

Подождите, я понял. Я вижу ошибку на моем пути. Спасибо огромное! – user2521768

Смежные вопросы