如何将向量传递给相同大小的函数句柄,以便它自动将第一个输入作为第一个变量等等?软件
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);
假设我有一个向量 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);