绘制没有显式变量名的匿名函数
Plot an anonymous function without explicit variable names
我创建了一个这样的匿名函数句柄:
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{:}])
我创建了一个这样的匿名函数句柄:
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{:}])