将矩阵传递到函数句柄(MATLAB)

将矩阵传递到函数句柄(MATLAB),matlab,Matlab,如果我有一组函数 f=@(x1,x2)([x1+x2;x1^2+x2^2]) 我还有第二个矩阵 b=[x1,x2] 如何评估f([b])?我知道的唯一方法是说f(b(1),b(2)),但我不知道如何实现自动化,因为变量的数量可能高达n。我还想知道是否有比单独插入更好的方法。您可以重写函数,以向量作为输入 f = @(b)[b(1) + b(2); b(1)^2 + b(2)^2] 然后使用,例如,b=[23]调用f(b)给出[2+3;2^2+3^2]=[5;13]convertToAccept

如果我有一组函数

f=@(x1,x2)([x1+x2;x1^2+x2^2])

我还有第二个矩阵

b=[x1,x2]


如何评估
f([b])
?我知道的唯一方法是说
f(b(1),b(2))
,但我不知道如何实现自动化,因为变量的数量可能高达n。我还想知道是否有比单独插入更好的方法。

您可以重写函数,以向量作为输入

f = @(b)[b(1) + b(2); b(1)^2 + b(2)^2]

然后使用,例如,
b=[23]
调用
f(b)
给出
[2+3;2^2+3^2]=[5;13]
convertToAcceptArray.m:

function f = convertToAcceptArray(old_f)
    function r = new_f(X)
        X = num2cell(X);
        r = old_f(X{:});
    end
    f = @new_f
end
用法.m:

f = @(x1,x2) ([x1 + x2; x1^2 + x2^2])
f2 = convertToAcceptArray(f);
f2([1 5])

假设
b
是一个N乘2的矩阵,您可以为
b
中的每对值调用
f
,如下所示:

cell2mat(arrayfun(f, b(:, 1), b(:, 2), 'UniformOutput', 0)')'
结果也是一个N×2矩阵

或者,如果允许您修改
f
,您可以重新定义它以接受向量作为输入,这样您只需调用
f(b)
,即可获得整个结果:


你想计算什么?我需要得到f矩阵与x1,x2的关系。抱歉,不清楚,我将编辑括号内的postMatrix下标,因为它在MATLAB中的语法无效。另外,像这样重新定义
f
有什么帮助?
f = @(x)[sum(x, 2), sum(x .^ 2, 2)]