2011-04-20 68 views
1

這是我的函數:Matlab的 - 錯誤的多輸入

function [o1 o2] = f(t, y) 
o1 = y(2); 
o2 = -sin(y(1)); 
end 

當我把它從命令提示符:

f(1, [2,3]) 
ans = 3 

爲什麼我只看到o1? 而且,這也不行

feval(f, 1, [2 3]) 

的錯誤消息是

Input argument "y" is undefined. 

Error in ==> f at 2 
o1 = y(2); 

請幫幫忙,我不知道發生了什麼事情。

回答

3

如果您只是調用沒有顯式輸出變量的函數,它將只返回第一個輸出參數,即o1並將其分配給位桶ans。要獲得兩種輸出,請執行以下操作。

[o1,o2]=f(1, [2,3]) 

要使用feval,你應該通過一個函數句柄,這是一個@跡象之前函數的名稱。所以,feval(@f,1,[2,3])應該工作。

3

feval應該被稱爲具有功能手柄或字符串,所以使用

feval(@f, 1, [2,3]) 

feval('f', 1, [2,3]) 

正如你將看到,這也只返回函數的第一個輸出。爲了接收更多的輸出,你必須分配它們,例如

[o1, o2] = feval(@f, 1, [2, 3]) 
+0

函數句柄版本更可取。 – Edric 2011-04-20 20:33:59

+0

更新 - 歡呼@Edric – jmetz 2011-04-20 20:36:45