在Matlab中提取数据的二维等高线图

时间:2015-10-21 09:06:50

标签: matlab

我有一个3个空间坐标x,y,z形式的数据集和一个振幅,这里是一小部分数据:

[        0    2.9373    0.4646    2.9926
    0.8384    1.5338    1.0000    1.0016
         0    0.7619    0.5051    1.0033
    1.0000    3.5288    0.6667    2.9894
         0    0.5013    0.4343    1.0037
    1.0000    2.8070    0.4848    2.9935
    0.7980    4.0000    0.8586    2.9872
    1.0000    0.1404    0.0707    1.0043
    1.0000    1.7845    0.1818    1.0007
    0.9798    3.1679    1.0000    2.9913]

我想要的是2D等高线图,其中界面由等高线内的等级表示,例如,2.0 +/- 0.05。

首先,我首先制作数据2D,然后在+/- 0.01范围内选择值z。然后我只剩下x,y,amplitude

然后我使用this来提取满足data(:,4)的数据集在2.0 +/- 0.05之内。

然而,现在剩下的就是制作轮廓图。我尝试了contour,但要求数据的格式为meshgrid,而不是extract()。所以我的问题是,提取数据的轮廓图的最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

您应该能够为分散的数据创建插值函数,如下所示:

F_interp = scatteredInterpolant(x,y,amplitude);

然后设置一个网格点的网格网格(使用可以基于原始数据的限制和大小):

xMin = min(x);
xMax = max(x);
yMin = min(y);
yMax = max(y);
Nx = 2*length(x);
Ny = 2*length(y);
xpts = linspace(xMin,xMax,Nx);
ypts = linspace(yMin,yMax,Ny);
[X,Y] = meshgrid(xpts,ypts);

在这些网格点插入数据:

A = F_interp(X,Y);

现在将插值数据传递给MATLAB contour函数:

contour(X,Y,A);