如何将向量传递给相同大小的函数句柄,以便它自动将第一个输入作为第一个变量等等?软件

How can I pass a vector to a function handle of the same size , so that it automatically takes the first input as the first variable and so on? MATLAB

假设我有一个向量 A=[a1 a2 a3 ... an],和一个定义的函数句柄 f=@(x1,x2,x3,..,xn),我如何在不显式写入 f(A(1),A(2),...,A(n)) 的情况下将向量输入到函数句柄?我正在写的代码针对不同的情况给了我不同的n,手动输入函数参数是不切实际的,因为它是可变大小的。

示例: 我可能会得到 f=@(x,y)(x^2+y^2)A=[1 2],我可以说 f(A(1),A(2)),我的问题就解决了,但前提是我有两个变量。如果我有 f=@(x,y,z)(x^2+y^2+z^2)A=[1 2 3],我应该写 f(A(1),A(2),A(3)).

这可能会改写为我怎样才能按照我想要的方式控制函数句柄中“插槽”的数量?

您可以通过元胞数组

% Convert input array to a cell
A = num2cell( A );
% Deal the cell array to the inputs of f
f( A{:} );

或者你只是编写你的函数,以便它索引一个数组,而不是依赖多个标量,即 f=@(x,y)x+y; 变成 f=@(z)z(1)+z(2);