我有一个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()
。所以我的问题是,提取数据的轮廓图的最简单方法是什么?
答案 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);