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

Plot an anonymous function without explicit variable names

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

 f = @(x,y)sqr(x)+sqr(y)

这是一个具有两个变量 xy 的球体。它似乎有效,因为我可以调用

f(2,3)

MATLAB 给出了正确的结果 ans = 13

在最后一步中,我想为 xy 绘制从 -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]].

也是如此

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

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

g = @(x,y)f([x, y]);
fmesh(g, [-7 7])

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

g = @(varargin)f([varargin{:}])