如何在Octave中控制ezcontour生成的等值线数量、位置与分辨率
在Octave中完全可以实现对等值线的平滑度、数量、位置的自定义控制,具体操作如下:
- 控制分辨率(保障曲线平滑)
ezcontour默认采样精度较低,想要更平滑的曲线,要么直接指定ezcontour的采样点数,要么自行生成高分辨率网格计算函数值,后者灵活度更高。示例代码如下:
% 生成200*200的高分辨率网格,数值可自行调整,越大越平滑 x = linspace(-5,5,200); y = linspace(-5,5,200); [X,Y] = meshgrid(x,y); f = @(x,y) ((x).^2-1+(y).^2)./y; Z = f(X,Y); % 处理y=0处的奇点,避免出现异常值 Z(Y == 0) = NaN;
- 控制等值线数量
使用contour函数绘图时,第三个参数传入标量即可指定等值线总数量,和你第一个ezcontour示例传入5的效果一致:
% 绘制5条自动取值的等值线 contour(X,Y,Z,5)
- 控制等值线具体位置
如果需要固定显示某几个数值对应的等值线,直接把第三个参数替换为你需要的数值数组即可:
% 仅绘制z等于0.5、1、2、3、4的等值线,数值可自定义 target_levels = [0.5,1,2,3,4]; contour(X,Y,Z,target_levels)
如果不想自行生成网格,也可以直接用ezcontour的参数实现上述控制:ezcontour(f, 绘图范围, 等值线参数, 采样点数),其中等值线参数传入标量为数量,传入数组为指定数值,采样点数设置越高曲线越平滑。
内容的提问来源于stack exchange,提问作者Janusz
相关产品推荐
相关产品推荐

