簡體   English   中英

在Matlab中提取數據的2D等高線圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM