2014-12-05 104 views
0

這是一個非常簡單的問題,雖然我不知道該如何處理它。如何從矩陣函數定義一個新函數?

我定義的函數f(x,y)將返回一個,比方說,2×2矩陣。我想定義一個新的功能g,其值是f(x,y)的(1,1)元素。我天真地嘗試[email protected](x,y)(f(x,y))(1,1),當然失敗了。請幫幫我!

+0

最簡單的方法漂亮的答案得到一個矩陣的(1,1)元素只是調用'F(1,1)'。功能並不是真的需要。 – eigenchris 2014-12-05 14:56:49

+0

但'f(1,1)'將返回一個2 * 2矩陣。 – Andy 2014-12-05 14:59:28

+0

對不起,我意識到你叫你的函數'f'。如果你有一個矩陣'M',你可以使用'M(1,1)'得到它的'(1,1)'元素。 – eigenchris 2014-12-05 15:02:47

回答

1

您可以使用:)

g = @(x,y)([1 0] * f(x,y) * [1 0]') 
+0

它有幫助!非常感謝! – Andy 2014-12-05 15:15:07

+0

美麗的解決方案,我會牢記這一點!不幸的是,對於大型矩陣不太實用。 – hbaderts 2014-12-05 15:15:28

+0

當然,getfield命令是正確的:) – Kostya 2014-12-05 15:16:28

1

您可以使用該功能getfield

讓我們來定義f(x,y)返回一個2x2矩陣

f = @(x,y) [1*x 2*y;3*x 4*y].^2 ; 

然後讓我們定義一個函數g11(x,y)其返回元素{1,1}爲f(x,y)。 (和一個額外的功能g21其返回{2,1}元素)

g11 = @(x,y) getfield(f(x,y) , {1,1}) ; 
g21 = @(x,y) getfield(f(x,y) , {2,1}) ; 

現在:

>> f(3,4) 
ans = 
    9 64 
    81 256 

>> g11(3,4) 
ans = 
    9 

>> g21(3,4) 
ans = 
    81 

對於沒有臨時變量字段賦值的更看中的使用,讀取所有在this question

+0

它還可以幫助!謝謝! – Andy 2014-12-05 15:15:57