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

时间:2016-12-02 13:49:58

标签: matlab plot anonymous-function

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

 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]]也是如此。

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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