Скорость бега в Matlab

Я написал медленный код и хочу сделать его быстрее. Я думаю, что часть потребителя времени должна быть ниже части, которая вызвала функцию (F_xy). Есть ли простой способ сделать код быстрее для этой части? (Длина (т) составляет приблизительно 1000000.)

 for i=1:(length(t)-1)                              % calculation loop
k_1 = F_xy(t(i),xx(i),aa,bb,l,T,K,F,D,del); 
k_2 = F_xy(t(i)+0.5*h,xx(i)+0.5*h*k_1,aa,bb,l,T,K,F,D,del);
k_3 = F_xy((t(i)+0.5*h),(xx(i)+0.5*h*k_2),aa,bb,l,T,K,F,D,del);
k_4 = F_xy((t(i)+h),(xx(i)+k_3*h),aa,bb,l,T,K,F,D,del);
xx(i+1) = xx(i) + (1/6)*(k_1+2*k_2+2*k_3+k_4)*h;    % main equation
`end` 

функция как ниже:

function Fp = F_xy(t,r,aa,bb,l,T,K,F,D,del)
W_0 = @(r) aa * ( sin(2*pi*r/l) + (del/4)*sin(4*pi*r/l)) + bb;
WW_0 = @(r) (2 * pi * aa / l) *( cos(2*pi*r/l) + (del/2) *cos(4*pi*r/l) );
ff = @(r) -D / (K * T * sqrt(1 + WW_0(r)*WW_0(r)));
ss = @(r) - T * K * (WW_0(r)/W_0(r));
index = round(t);
if(index > 0 && index <= length(F))
 Fp = ff(r)*(F(index) + ss(r));]
else
error('index out of bounds');
end
end

0 ответов

Другие вопросы по тегам