2013-11-24 75 views
0

我有一個返回3個值的函數句柄。MATLAB嵌套句柄返回多個輸出

@f(x,y) = basis_handle(x,y); 

[z, dx, dy] = f(0.1,0.1) %returns 3 vectors 

我想現在要做的是創建一個函數句柄執行每個與另一個向量的3個向量的點積。喜歡的東西:

@f_2(x,y) c'*f(x,y) %c is a known vector, same size as ones returned by @f(x,y) 

正因爲如此,這個句柄只返回1值,即使我嘗試要求更多,即這會產生一個錯誤:

[z, dx, dy] = f_2(0.1,0.1) 

有什麼辦法來創建函數句柄根據請求返回所有3個值?

+0

如果Z, c等是列向量,則f_2返回三個值的向量,每個值對應一個點積,對嗎? –

+0

@LuisMendo:'c'* [z,dx,dy]'返回一個3值的向量是正確的,但是我不能將它合併到一個函數句柄中。所以我想我實際上並不需要f_2來返回3個輸出,但我需要f將3個向量傳遞給f_2。我認爲這是問題所在。 –

回答

0

我不知道這是否有助於(其實也就相當於通過三個輸出到不同的變量,可以在F_2中定義):

function varagout = f_1(x,y) 
varagout=[x + 1 y-x y/x]; 

,並

function varagout = f_2(x,y) 
C=[1 2 3]; 
varagout=C.*f_1(x,y); 


>> f_1(0.1,0.1) 
ans = 1.1000   0 1.0000 
>> f_2(0.1,0.1) 
ans = 1.1000   0 3.0000