绘制一个没有显式变量名的匿名函数

sel*_*neh 5 matlab plot anonymous-function

我创建了一个像这样的匿名函数句柄:

 f = @(x,y)sqr(x)+sqr(y)
Run Code Online (Sandbox Code Playgroud)

这是两个变量的球体xy.它似乎工作,因为我可以调用类似的东西

f(2,3)
Run Code Online (Sandbox Code Playgroud)

和MATLAB给了我正确的结果ans = 13.

在最后一步中,我想绘制该函数,从让我们说-7到7为两者xy.所以我打电话

fmesh(f,[-7 7])
Run Code Online (Sandbox Code Playgroud)

弹出正确的数字.到现在为止还挺好.

由于某些原因,我不想在这里指定,我现在想要编辑函数句柄:

f = @(x)sqr(x(1))+sqr(x(2))
Run Code Online (Sandbox Code Playgroud)

这应该是相同的球体,但这次使用2个变量x(1)x(2).由于函数现在想要一个数组作为参数,我编辑了测试调用

f([2,3])
Run Code Online (Sandbox Code Playgroud)

它仍然给了我正确的结果ans = 13.

但问题在于:如何绘制想要数组作为参数的函数?与之前相同的网格命令当然失败,因为它[-7,7]具有错误的维度.这同样适用于[[-7 7] [-7 7]][[-7 7];[-7 7]].

如何从新功能句柄中获取工作图?提前致谢!

Sue*_*ver 4

您无法像您期望的那样将和值作为数组fmesh传递。您可以做的是将匿名函数包装在另一个匿名函数中,该函数只是重新排列输入。xyf

g = @(x,y)f([x, y]);
fmesh(g, [-7 7])
Run Code Online (Sandbox Code Playgroud)

一个更通用的解决方案,它接受所有输入并将它们放入一个数组中

g = @(varargin)f([varargin{:}])
Run Code Online (Sandbox Code Playgroud)