我创建了一个像这样的匿名函数句柄:
f = @(x,y)sqr(x)+sqr(y)
这是一个包含两个变量x
和y
的球体。它似乎工作,因为我可以调用像
f(2,3)
和MATLAB为我提供了正确的结果ans = 13
。
在最后一步中,我想为x
和y
绘制该函数,比如说-7到7。所以我打电话给
fmesh(f,[-7 7])
然后弹出右图。到目前为止,非常好。
由于某些原因,我不想在这里指定,我现在想要编辑函数句柄:
f = @(x)sqr(x(1))+sqr(x(2))
这应该是相同的球体,但这次使用2个变量x(1)
和x(2)
。
由于函数现在想要一个数组作为参数,我编辑了测试调用
f([2,3])
它仍然给我正确的结果ans = 13
。
但问题是:如何绘制想要数组作为参数的函数?
与之前相同的网格命令当然失败,因为[-7,7]
具有错误的维度。 [[-7 7] [-7 7]]
和[[-7 7];[-7 7]]
也是如此。
如何从新功能句柄中获取工作图? 提前谢谢!
答案 0 :(得分:4)
您无法fmesh
将x
和y
值作为数组传递,就像您期望的那样。您可以做的是将匿名函数f
包装在另一个匿名函数中,该函数只是重新排列输入。
g = @(x,y)f([x, y]);
fmesh(g, [-7 7])
一个更通用的解决方案,它接受所有输入并将它们放入一个数组中
g = @(varargin)f([varargin{:}])