matlab中的平滑等高线图

Smooth Contour Plot in matlab

我想从 X Y Z 矩阵绘制平滑等高线图。

sf = fit([X Y] Z, 'poly23');
plot(sf);

我的曲线不够平滑.. 我需要的?

您可以使用griddata and csaps等功能。他们将共同引导您获得如您所愿的顺利结果。第一个函数向您的数据矩阵集添加额外的点。第二个使结果更平滑。代码示例如下。在示例中,平滑首先在 X 方向完成,然后在 Y 方向完成。尝试使用 resolutionsmoothing_parameter(这些参数的当前设置应该没问题)。

x = min_x:step_x:max_x;
y = min_y:step_y:max_y;
resolution = 10;

xg = min_x:(step_x/resolution):max_x;
yg = min_y:(step_y/resolution):max_y;
[X,Y] = meshgrid(x,y);
[XG,YG] = meshgrid(xg,yg);    


smoothing_parameter = 0.02;
fitted = griddata(X,Y,Z,XG,YG,'cubic');
fitted_smoothed_x = csaps(xg,fitted,smoothing_parameter,xg);
fitted_smoothed_xy = csaps(yg,fitted_smoothed_x',smoothing_parameter,yg);

surf(XG,YG,fitted_smoothed_xy');

编辑:如果你只想得到一个等高线图,你可以这样做,例如,如下所示。由于我没有真实数据,我将使用内置函数 peaks 生成一些。

[X,Y,Z] = peaks(30);
figure
surfc(X,Y,Z)
view([0 90])
zlim([-10 -8])

在这里,您只需从表面以下的上方查看等高线图。