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

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

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

最佳答案

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

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

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

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

关于matlab - 绘制没有显式变量名的匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40933749/

相关文章:

python - 我可以从颜色列表和 for 循环中绘制颜色条吗?

R 插值极坐标等值线图

php - 为什么无法在 PHP 的匿名函数中从父/外部作用域访问变量?

java - Matlab与Java集成的方法

matlab - 更改 MATLAB Polarplot 中的网格线颜色/对比度

matlab - 如何在 matlab 中绘制不同高度和不同宽度的条形图?

JavaScript:从外部访问匿名函数内部的变量

matlab - 是否可以有一个工作区变量在清除调用中持续存在?

r - 绘制分类变量图

matlab - MATLAB中的逐次函数应用