如何从矩阵函数定义新函数?

时间:2014-12-05 14:48:26

标签: matlab

这是一个非常简单的问题,虽然我不知道如何处理它。

我定义了一个函数f(x,y),它将返回一个2 * 2矩阵。我想定义一个新函数g,其值为f(x,y)的(1,1)元素。我天真地尝试g=@(x,y)(f(x,y))(1,1),当然失败了。请帮帮我!

2 个答案:

答案 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

中的所有好答案