让我们说我有一个匿名函数,具有n个输入,f(x1,x2 x3,... xn)和一个长度为n的向量,可以说向量= [1,2,3,... n]。有没有办法让MATLAB将向量的各个值作为f的对应输入?例如:
f = @(x,y,z) x+y+z;
vector = [1,2,3];
f(vector)
ans =
6
我想在一个较大的脚本文件中使用此文件,在该文件中我不知道输入的数量,但是程序会根据长度(向量)将其计算出来。
为澄清起见,上面的代码模仿了我想发生的事情。如果将其正确地放入MATLAB中,则会得到:
Not enough input arguments.
答案 0 :(得分:2)
使用num2cell
将向量转换为单元格数组,然后从中生成comma-separated list:
>> f = @(x,y,z) x+y+z;
>> vector = [1,2,3];
>> cell_array = num2cell(vector);
>> f(cell_array{:})
ans =
6