当我运行下面的Matlab代码:
x=sym('x',[2 1])
func=x.'*x
f=matlabFunction(func)
x=rand(2,1)
f(x(1),x(2)) % this works
f(x) % but this gives an error
我得到一个错误:
Error using symengine>makeFhandle/@(x1,x2)x1.^2+x2.^2
Not enough input arguments.
我想让代码对于n向量更通用,n在代码中确定。
因此,我无法列出所有n个变量,如f(x(1), x(2), ..., x(n))
有没有办法把n向量转换成一个n分量的列表,然后传递给函数?
2条答案
按热度按时间blmhpbnm1#
在
num2cell
中有一个技巧,你可以把每个参数转换成它自己的单元格,然后用:
来处理这些参数,换句话说,你可以这样做:重复上面的代码,使用我定义的代码,得到的结果如下:
我还显示了
x
是什么以及最终的答案是什么。这是我得到的结果:这也与以下内容相同:
一般来说,只要定义的函数能够处理这么多的输入/维度,就可以对任何维度向量执行此操作。
b91juud32#
要解决此问题,请使用
vars
参数: