[英]2D contour plot with extracted data in 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
。
然后,我用它來提取滿足data(:,4)
在2.0 +/- 0.05以內的數據集。
但是,現在剩下的實際上是繪制輪廓圖。 我嘗試了contour
但是這要求數據具有meshgrid
的格式,而事實並非如此。 所以我的問題是,對提取的數據進行等高線繪制的最簡單方法是什么?
您應該能夠為分散的數據創建插值函數,如下所示:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.