这是一个非常简单的问题,虽然我不知道如何处理它。
我定义了一个函数f(x,y)
,它将返回一个2 * 2矩阵。我想定义一个新函数g
,其值为f(x,y)
的(1,1)元素。我天真地尝试g=@(x,y)(f(x,y))(1,1)
,当然失败了。请帮帮我!
答案 0 :(得分:1)
您可以使用:)
g = @(x,y)([1 0] * f(x,y) * [1 0]')
答案 1 :(得分:1)
您可以使用getfield
让我们定义f(x,y)
以返回2x2矩阵
f = @(x,y) [1*x 2*y;3*x 4*y].^2 ;
然后让我们定义一个函数g11(x,y)
,它返回f(x,y)
的元素{1,1}。 (以及一个返回{2,1}元素的额外函数g21
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
中的所有好答案