2013-06-09 1 views
-1

Стараюсь этот код для реализации hyperchaotic Лоренц в MATLAB:Реализация hyperchaotic Лоренц в MATLAB

function Y=b(a,b,c,d,e,k) 
     [T,Y]=ode45(@rigid,[0 e],[a b c d]); 
    function out=rigid(t,y) 
     out=zeros(4,1); 
     out(1)=10*(y(2)-y(1)); 
     out(2)=28*y(1)+y(2)-y(1)*y(3)-y(4); 
     out(3)=y(1)*y(2)-(8/3)*y(3); 
     out(4)=0.1*y(2)*y(3)+k; 
end; 
end; 

Но когда я вызвать функцию б со значением, у меня есть эта ошибка: ??? Индекс превышает размерность матрицы. может ли кто-нибудь помочь мне с этим кодом?

+1

Попробуйте удалить точки с запятой после операторов 'end', в частности, последней. Кроме того, FYI, одна из причин, по которой вы, вероятно, попали - проголосовали, заключалась в том, что вы предоставили функцию без возможности ее запуска, т. Е. Вы не сказали, что такое входы. – horchler

+0

Знаете ли вы, что у вас есть переменная с именем 'b' в вашей функции с именем' b'? –

+1

@RobertP .: Это, похоже, не вызывает проблемы (R2012b, OS X 10.8.4), но это, конечно, не очень хорошая идея. Это также может привести к тому, что код будет более медленным, хотя Matlab должен будет определить, какой вызов вызывается 'b'. – horchler

ответ

1

Я предполагаю, что ваша ошибка заключается в том, что у вас есть переменная с именем b в рабочей области.

следующие работы как шарм:

b(1,1,1,1,1,1); 

Следующая нет:

a = 1; b = 1; c = 1; d = 1; e = 1; k = 1; 

b(a,b,c,d,e,k) 
Index exceeds matrix dimensions. 

Что вы получите, если вы наберете

whos b?

+0

Спасибо и извините за эту очевидную ошибку (b). –

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