0
當我試圖解決ODE系統中的兩個方程時,我遇到了一些困難MATLAB。嘗試在MATLAB中解決ODE系統時會產生以下錯誤:「未定義的函數'存在',用於'cell'類型的輸入參數」
我使用的代碼如下:
x0=-1; %Initial condition for variable x
y0=-10; %Initial condition for variable y
[email protected](t,x,y) y+2.*t; %First ODE
[email protected](t,y) y; %Second ODE
f={dx;dy}; %Array that contains the first and second ODE's
[t,g]=ode15s(f,[0 1],[x0 y0]); %Call for ode15s solver
當我執行這個代碼,我得到以下錯誤:
Undefined function 'exist' for input arguments of type 'cell'.
我不希望創建的一個功能風格
function f=myodes(t,x,y)
etc etc
end
因爲這段代碼是嵌套在一個函數代碼中,然後它將被嵌入在Simulink的MATLAB功能塊中,需要使用Simulink文件中其他塊的輸出作爲輸入。
我不能直接在Simulink上做它,因爲該代碼實際上是我需要解決的一組更大的方程的練習,其中自變量不是時間而是距離。
任何幫助,將不勝感激。
謝謝!
什麼讓你覺得你不能使用你建議的形式的功能?看看[本地函數]上的文檔(http://www.mathworks.nl/help/matlab/matlab_prog/local-functions.html)。 –
請注意,Simulink解決了系統在每個時間步所表示的微分方程,因此不需要(也不應該)調用'ode15s'並嘗試求解MATLAB函數塊中的微分方程。 – am304
@Rody Oldenhuis:我看了一下MATLAB幫助的嵌套函數部分,但我相信這可以在不需要嵌套函數和更少代碼行的情況下完成。你的回答證明了我的觀點。 – elporsche