Matlab如何制作平滑的等高线图? | 您所在的位置:网站首页 › matlab画等值线图填充 › Matlab如何制作平滑的等高线图? |
我想用二维格式的 2 个变量表示数据。该值由颜色表示,2 个变量作为 2 轴。我正在使用 contourf 函数来绘制我的数据: clc; clear; load('dataM.mat') cMap=jet(256); %set the colomap using the "jet" scale F2=figure(1); [c,h]=contourf(xrow,ycol,BDmatrix,50); set(h, 'edgecolor','none'); xlim([0.0352 0.3872]); ylim([0.0352 0.3872]); colormap(cMap); cb=colorbar; caxis([0.7 0.96]); % box on; hold on;xrow和ycol都是表示坐标的6x6矩阵。 BDmatrix 是表示相应数据的 6x6 矩阵。然而,我得到的是: 以下是xrow和yrow矩阵: BD矩阵如下: 轮廓颜色是否可以平滑变化而不是显示为连接数据点的直线?这个图的问题是粒度粗,不吸引人。我试图用 imagec 替换 contourf 但它似乎不起作用。我正在使用 MATLAB R2015b。 最佳答案 您可以插入数据。 newpoints = 100; [xq,yq] = meshgrid(... linspace(min(min(xrow,[],2)),max(max(xrow,[],2)),newpoints ),... linspace(min(min(ycol,[],1)),max(max(ycol,[],1)),newpoints )... ); BDmatrixq = interp2(xrow,ycol,BDmatrix,xq,yq,'cubic'); [c,h]=contourf(xq,yq,BDmatrixq);通过参数 newpoints 选择新绘图的“平滑度”。 要减少颜色边,可以增加值步数。默认情况下,这是 10。以下代码将值步数增加到 50: [c,h]=contourf(xq,yq,BDmatrixq,50); 3D 冲浪图更适合非常平滑的颜色渐变。只需将其旋转到自上而下的 View 即可。冲浪图也比具有很多值(value)步骤的等高线图快得多。 f = figure; ax = axes('Parent',f); h = surf(xq,yq,BDmatrixq,'Parent',ax); set(h, 'edgecolor','none'); view(ax,[0,90]); colormap(Jet); colorbar; 注意 1: 三次插值不保持形状。这意味着,插值形状的最大值可以大于原始 BDmatrix 的最大值(以及小于的最小值)。如果 BDmatrix 有噪声值,插值可能不好。 注意 2: 如果您自己生成了 xrow 和 yrow(并且知道限制),那么你不需要像我那样进行最小-最大-提取。 注意 3: 在将数据矩阵的屏幕截图添加到原始帖子后,可以看到,xrow 和 ycol 来自 ndgrid 生成器。所以我们也必须在这里使用它以保持一致。由于 interp2 需要 meshgrid 我们必须切换到 griddedInterpolant: [xq,yq] = ndgrid(... linspace(min(min(xrow,[],1)),max(max(xrow,[],1)),newpoints ),... linspace(min(min(ycol,[],2)),max(max(ycol,[],2)),newpoints )... ); F = griddedInterpolant(xrow,ycol,BDmatrix,'cubic'); BDmatrixq = F(xq,yq);关于Matlab如何制作平滑的等高线图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44816434/ |
CopyRight 2018-2019 实验室设备网 版权所有 |