2012-01-08 75 views
1

我已經定義了一個函數傳遞一個定義函數來ODE求解

function dy = toggle(t,y,p) 
dy = zeros(2,1); 
dy(1) = - y(1) + p(1)./(1+y(2).^p(2)); 
dy(2) = - y(2) + p(1)./(1+y(1).^p(3)); 

並用相同名稱的功能,它保存在一個.m文件。在另一個文件中,caltoggle.m,我寫:

[T,Y] = ode45(@toggle,[0 100],[0.2,0.1],[],[3,2,2]); 

當我運行該腳本caltoggle.m我得到的錯誤:

??? [T,Y] = ode45(@ 
       | 
Missing variable or function. 

Error in ==> C:\MATLABR11\work\caltoggle.m 
On line 1 ==> 

caltoggle 

上面的代碼是從教程實例以便應對。我的問題通常是我無法調用已定義的函數。

+0

你的函數叫做caltoggle還是隻是切換? – user973572 2012-01-08 18:11:03

+0

只需切換。 「caltoggle.m」是我使用的第二個文件的名稱ode45 – Aya 2012-01-08 18:12:46

+0

切換文件與caltoggle.m位於同一目錄中嗎? – Jorge 2012-01-08 18:21:51

回答

0

如果其他文件不在同一目錄中,則應該將目錄添加到路徑中。
嘗試在Matlab中寫:

pathtool

而且,雖然它可能不是你的情況,如果你的名字中包含「嘗試」保留字的文件時,它可能會導致混亂。

另外,儘量寫

which toggle

它可能是有見地的。

+0

都在相同的路徑:C:\ MATLABR11 \工作 我鍵入哪個開關,它返回我的唯一文件toggle.m 確實調用函數需要檢查的東西,當我下載Matlab?或者可能有另一種方式來調用matlab 5.3中的函數? – Aya 2012-01-09 04:07:42

0

在Matlab的documentation的ODE求解器所有的例子作爲傳遞的第一個參數ode45 2個變量,而不是三個的功能您的函數toggle。你可以改變你的toggle函數只接受兩個輸入參數,看看是否解決了這個問題(作爲第一個測試只是設置p(:)=1或類似的東西)

+0

不幸的是它沒有工作 – Aya 2012-01-09 14:08:47

+0

@Aya爲什麼不呢?你嘗試了什麼?你得到了什麼錯誤? – Chris 2012-01-09 14:18:36

+0

我試過 函數dy = toggle(t,y) dy =零(2,1); dy(1)= - y(1)+1 ./(1 + y(2)); dy(2)= - y(2)+1 ./(1 + y(1)); 然後在另一個名爲caltoggle.m的文件中輸入並保存: [T,Y] = ode45(@toggle,[0 100],[0.2,0。1],[]); 然後它返回: »??? [T,Y] = ODE45(@ | 缺少變量或函數 錯誤==> C:\ MATLABR11 \工作\ caltoggle.m 第2行==> caltoggle – Aya 2012-01-09 14:28:14

相關問題