我有一个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
格式,但它没有。所以我的问题是,绘制提取数据的等高线图最简单的方法是什么?
发布于 2015-10-21 09:34:36
您应该能够为您的散乱数据创建插值函数,如下所示:
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);
https://stackoverflow.com/questions/33255161
复制