在 MATLAB 中具有更平滑的等高线图

计算科学 matlab 绘图 平滑
2021-12-17 06:08:26

我有一个矩阵,我想用 MATLAB 中的 contourf 命令绘制它的内容,如下所示:80×200

[C,h] = contourf(mat,100);set(h,'LineColor','none');

如您所见,生成的图像在白色部分与彩色部分的交汇处有一些阶梯状的不连续性。有没有办法用曲线拟合工具或其他方法来平滑这个区域?

...

2个回答

白色部分是 NaN 吗?

如果是这样,那么您将需要使用某种推断来平滑该区域。函数inpaint_nans可能是合适的(它平滑地填充 NaN 区域,主要是通过求解拉普拉斯方程)。如果需要更多平滑,则可以遵循 Juan 的方法(即高斯模糊)。

您可能会考虑的另一件事:我不知道您显示的目的是什么,但您可能会考虑只使用 imagesc() 而不是 contourf()。例如

contourf(I,100); 

应该类似于

imagesc(I); colormap(jet(100));

它只是量化用于渲染图像数据的颜色图。(与计算 100 个轮廓相比,量化颜色图通常会快得多。)

您可以将原始矩阵视为图像(即,实值函数),然后可以应用高斯滤波器与高斯核卷积),最后可以得到轮廓过滤后的图像/矩阵。MATLAB 的图像处理工具箱已经具备可用的功能I=I(x,y)I