我有以下函数(z
),它应该输出一个图形,如果在f(x,y) = 0.001
上切片,结果图像应该是一条消息。
我写了这段代码,但我不能把它切好。
[x,y] = meshgrid(-1.5:0.3:1.5,-2.5:0.5:2.5) ;
z=exp(-4*x.^2-2*y.^2)*cos(8*x)+exp(-3*((2*x+1)/2).^2-6*y.^2);
% meshc (x,y,z, [0.001 0.001]);
meshc (x,y,z);
我错过了什么?
发布于 2017-01-17 17:12:58
您可能会寻找countour
函数而不是meshc
。meshc
在网格图下绘制等高线图,但不需要网格图来查看消息。实际上,countour
文档显示了如何只绘制特定级别的示例:
contour(x, y, z, [0.001 0.001])
我还怀疑您的函数没有正确定义。exp(...) * cos(...)
应该读exp(...) .* cos(...)
糟糕的粒度使我相信,应该减少样本间距(也就是说,网格应该变得更细):
[x,y] = meshgrid(-1.5:0.003:1.5,-2.5:0.005:2.5);
用更细的间距绘制原始函数的轮廓也说明了为什么我认为表达式中的*
应该是.*
:
[x,y] = meshgrid(-1.5:0.003:1.5,-2.5:0.005:2.5);
z=exp(-4*x.^2-2*y.^2)*cos(8*x)+exp(-3*((2*x+1)/2).^2-6*y.^2);
contour(x, y, z, [0.001 0.001])
除非消息是香肠形状的计数,否则我认为.*
版本更有可能包含有用的信息(看起来像HI)。
发布于 2017-01-17 17:11:23
您需要使用contour
而不是meshc
来绘制网格与0.001
的交集,这样您就可以精确地指定要计算轮廓的值。
contour(x, y, z, [0.001 0.001]);
如果您确实想使用meshc
,可以使用包含轮廓图句柄的输出将LevelList
属性设置为所需的值。
h = meshc(x, y, z);
set(findobj(h, 'type', 'contour'), 'LevelList', [0.001 0.001])
至于说出一条可理解的信息,我想智慧就在旁观者的眼里。
https://stackoverflow.com/questions/41702898
复制相似问题