我有以下函数(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);
我错过了什么?
答案 0 :(得分:0)
您需要使用contour
而不是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])
属性设置为你想要的值
{{1}}
至于获得可理解的信息,我认为智能是在旁观者眼中
答案 1 :(得分:0)
您可能正在寻找countour
功能而不是meshc
。 meshc
绘制网格图下的等高线图,但您不需要网格图来查看消息。实际上,countour
文档显示了如何仅绘制特定级别的example:
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])
除非邮件是香肠形状的数量,否则我认为.*
版本更有可能包含有用的信息。