我创建了一个这样的匿名函数句柄:
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]]
也是如此。
如何从新函数句柄中获取工作图? 提前致谢!
最佳答案
您无法让 fmesh
像您期望的那样将 x
和 y
值作为数组传递。您可以做的是将您的匿名函数 f
包装在另一个匿名函数中,该函数只是重新安排输入。
g = @(x,y)f([x, y]);
fmesh(g, [-7 7])
一个更通用的解决方案是接受所有输入并将它们放入一个数组中
g = @(varargin)f([varargin{:}])
关于matlab - 绘制没有显式变量名的匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40933749/