2012-02-23 165 views
3

我有一個時間序列的溫度分佈圖,我想要插入,我想問如何做到這一點,如果我的數據不規則間隔。matlab中不規則間隔的3D矩陣插值

這裏是矩陣的細節:

  • 溫度30x365
  • 的時間是1x365
  • 深度是30X1

時間和深度是不規則地間隔開。我想問一下如何將它們插入到普通網格中?

我已經看過在Matlab interp2TriScatteredInterp,但是這個問題有以下幾點:只有當數據在規則網格

  1. interp2作品。
  2. TriscatteredInterp只有在向量是列向量時纔有效。雖然時間和深度都是列矢量,但溫度不是。

感謝。

+0

您可以通過溫度的每一行()''溫度(我)簡單地重複。但是,這個問題還不清楚。你想要做什麼?什麼樣的插值?線性,多項式,有點奇特?你能不能像往常一樣適應並從那裏出發? – Superbest 2012-02-24 00:20:53

回答

2

功能Interp2不需要一個規律間隔測量網格可言,它只需要一個單調之一。也就是說,存儲在矢量depthstimes中的採樣位置必須增加(或減少),這就是全部。

假設這確實是情況 *和你想在存儲載體rdepthsrtimes規則位置 **內插,你可以這樣做:

[JT, JD] = meshgrid(times, depths); %% The irregular measurement grid 
[RT, RD] = meshgrid(rtimes, rdepths); %% The regular interpolation grid 
TemperaturesOnRegularGrid = interp2(JT, JD, TemperaturesOnIrregularGrid, RT, RD); 


* :如果沒有,您可以對行和列進行排序以返回到單調網格。
*
*:實際上Interp2對輸出網格沒有限制(它可以是不規則的或者甚至是非單調的)。

0

我會使用您的數據擬合樣條或多項式,然後定期重新採樣。我強烈推薦polyfitn函數。其實,這個約翰D'Errico傢伙的任何東西都是不可思議的。除此之外,我過去使用過這個功能,當時我收到了一個不規則間隔的3D問題的數據,並且它工作得很好。如果你的數據集有很好的支持,我懷疑它會這樣做,這將是小菜一碟。請享用!希望這可以幫助!

0

試試John D'Errico在MATLAB中心的GridFit工具。要使用它,傳入2個獨立的數據向量(溫度時間&),相關數據矩陣(深度)以及要使用的規則間隔X數據點。默認情況下,該工具也可以平滑重疊(或接近)數據點。如果不需要,您可以通過各種配置選項覆蓋此選項(以及其他選項)。示例代碼:爲了避開大小問題:

%Establish regularly spaced points 
num_points = 20; 
time_pts = linspace(min(time),max(time),num_points); 
depth_pts = linspace(min(depth),max(depth),num_points); 

%Run interpolation (with smoothing) 
Pest = gridfit(depth, time, temp, time_pts, depth_pts);