0
我想編寫一個快速的MATLAB代碼,我需要編寫一個for循環,並且每次都需要求解一個常微分方程。是否有任何方法可以對代碼進行矢量化? 以下是部分代碼:在每次迭代中涉及ODE解算器的Matlab代碼矢量化
tspan=0:0.01:20;
dw=rand(p,1);
M0=repmat([0 0 1],p,1)';
for p=1:ns
[t,M(:,:,p)]=ode45(@(t,M) testfun(t,M,dw(p)),tspan,M0(:,p));
end
其中
function dM=testfun(t,M,w1)
M_x=M(1);
M_y=M(2);
M_z=M(3);
dM=[w1*M_y;-w1*M_x+w1*M_z-2*w1*M_y;-w1*M_y-(1-M_z)];
謝謝了很多...對不起來晚了,感謝你...但它會幫助我反正... –
下一個問題是......是有可能解決這個相同的系統,如果w1隨時間步長而變化,無需在ODE函數中插入w1,因爲它非常耗時 –