sel*_*neh 5 matlab plot anonymous-function
我创建了一个像这样的匿名函数句柄:
f = @(x,y)sqr(x)+sqr(y)
Run Code Online (Sandbox Code Playgroud)
这是两个变量的球体x和y.它似乎工作,因为我可以调用类似的东西
f(2,3)
Run Code Online (Sandbox Code Playgroud)
和MATLAB给了我正确的结果ans = 13.
在最后一步中,我想绘制该函数,从让我们说-7到7为两者x和y.所以我打电话
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]].
如何从新功能句柄中获取工作图?提前致谢!
您无法像您期望的那样将和值作为数组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)