2016-05-03 16 views
1

MATLABのあるグリッドから別のグリッドへデータを補間しようとしています。最初のグリッドはyで不均一に配置されていますが、2番目のグリッドは不揃いです。補間(griddataを使用)を実行すると、その結果は、データが存在しない領域にわたって推定されます。MatlabでGriddataに不要な補間があります

補間前後のコードとプロットを示します。後

Before interpolation

::前

Xin2 = [619000  619000  619000  619000  619000  619000 
    621000  621000  621000  621000  621000  621000 
    623000  623000  623000  623000  623000  623000 
    625000  625000  625000  625000  625000  625000 
    627000  627000  627000  627000  627000  627000 
    629000  629000  629000  629000  629000  629000 
    631000  631000  631000  631000  631000  631000 
    633000  633000  633000  633000  633000  633000 
    635000  635000  635000  635000  635000  635000 
    637000  637000  637000  637000  637000  637000 
    639000  639000  639000  639000  639000  639000 
    641000  641000  641000  641000  641000  641000 
    643000  643000  643000  643000  643000  643000 
    645000  645000  645000  645000  645000  645000 
    647000  647000  647000  647000  647000  647000 
    649000  649000  649000  649000  649000  649000 
    651000  651000  651000  651000  651000  651000 
    653000  653000  653000  653000  653000  653000 
    655000  655000  655000  655000  655000  655000 
    657000  657000  657000  657000  657000  657000 
    659000  659000  659000  659000  659000  659000]; 

Yin2 = [-688.38  -626.71  -568.39  -514.5  -465.64  -422.03 
    -688.36  -626.64  -568.28  -514.35  -465.46  -421.82 
    -688.32  -626.51  -568.07  -514.06  -465.1  -421.4 
    -688.25  -626.31  -567.74  -513.61  -464.54  -420.75 
    -688.2  -626.18  -567.53  -513.33  -464.19  -420.34 
    -688.19  -626.13  -567.45  -513.23  -464.06  -420.19 
    -688.14  -625.99  -567.22  -512.91  -463.67  -419.73 
    -688.06  -625.74  -566.82  -512.37  -463.01  -418.95 
    -688.01  -625.6  -566.59  -512.06  -462.61  -418.49 
    -688  -625.57  -566.54  -511.99  -462.53  -418.4 
    -687.13  -623.02  -562.4  -506.38  -455.59  -410.27 
    -677.94  -595.9  -518.32  -446.64  -381.64  -323.64 
    -677.06  -593.29  -514.08  -440.89  -374.52  -315.3 
    -677.06  -593.29  -514.08  -440.89  -374.52  -315.3 
    -677.06  -593.29  -514.08  -440.89  -374.52  -315.3 
    -677.06  -593.29  -514.08  -440.89  -374.52  -315.3 
    -677.06  -593.29  -514.08  -440.89  -374.52  -315.3 
    -677.06  -593.29  -514.08  -440.89  -374.52  -315.3 
    -677.06  -593.29  -514.08  -440.89  -374.52  -315.3 
    -677.06  -593.29  -514.08  -440.89  -374.52  -315.3 
    -677.06  -593.29  -514.08  -440.89  -374.52  -315.3]; 

Tempin2 = [0.74399  0.734  0.71456  0.68519  0.64358  0.58546 
    0.7444  0.73442  0.71505  0.68578  0.64421  0.58598 
    0.7446  0.73456  0.71517  0.68589  0.64428  0.58594 
    0.74389  0.7338  0.71437  0.68505  0.64341  0.58507 
    0.74176  0.73172  0.71234  0.68311  0.64166  0.58365 
    0.73842  0.72847  0.70929  0.68033  0.63925  0.58175 
    0.73554  0.72561  0.70641  0.67755  0.63666  0.57929 
    0.73602  0.72568  0.70602  0.67671  0.63529  0.57718 
    0.74297  0.73128  0.7101  0.67944  0.63682  0.57729 
    0.75596  0.74156  0.71799  0.68532  0.6408  0.57963 
    0.77081  0.75286  0.72441  0.68681  0.63783  0.57257 
    0.77558  0.74655  0.7048  0.65198  0.58381  0.49389 
    0.76412  0.73625  0.69626  0.6459  0.57968  0.49109 
    0.7519  0.72508  0.68915  0.64346  0.58165  0.49733 
    0.74398  0.72001  0.68661  0.64361  0.58471  0.50343 
    0.7387  0.718  0.68708  0.64565  0.58851  0.50948 
    0.73546  0.71749  0.68821  0.64767  0.59183  0.51471 
    0.73255  0.71626  0.68831  0.64861  0.59397  0.51842 
    0.72843  0.71274  0.68603  0.64778  0.5947  0.52053 
    0.72166  0.7065  0.68148  0.64538  0.59429  0.52148 
    0.71285  0.69917  0.67631  0.64259  0.59351  0.52205]; 

%And the code to make the interpolation variables and run the interpolation: 

[X_i,Y_i]=meshgrid([Xin2(:,1)],[-700:5:-315]); 
Temp_i=griddata(Xin2,Yin2,Tempin2,X_i,Y_i); 

figure,pcolor(Xin2,Yin2,Tempin2), shading flat % original data 
figure,pcolor(X_i,Y_i,Temp_i),shading flat %interpolated data 

入力変数 After interpolation

誰もが約から斜めに合流外挿したデータのダークブルーの三角形を(説明することができます(6.4e5、-325)から(6.2e5、-425)まで、そしてこれをどうやって止めることができますか?

NB私は両方のプロットで同じキャックスを維持するのを忘れていました。これは、不要な補間がどこで発生するかを示すために重要ではありません。

答えて

2

これは、定義によってgriddataが外挿されないために発生します。しかし補間はおおよそデータの凸包に基づいています。データがある入力値を見ると、凸包は2番目の画像に表示された結果と似ています。

これはscatteredInterpolantnone外挿法を使用するのと同じです。

外挿はありません。 F.Pointsの凸包以外のクエリはNaNを返します。

は、ここで私はあなたの入力(Xin2Yin2)あなたの補間結果に重ね合わさの黒(convhull)で凸包を示しています。

K = convhull(Xin2, Yin2); 
plot(Xin2(K), Yin2(K)) 

enter image description here

限り、これを防ぐ方法として、あなただけがあなたの最初のデータセットの境界内にあることを知っているポイントで問い合わせることができます。限り、までどのようにこれを行うには、最初のデータの概要を作成し、inpolygonを使用して各クエリポイントをテストし、この概要の内部にあるクエリポイント(X_iY_i)のみをgriddata

この概要を得るには、gptoolboxordered_outlineのようなものを使用できます。

+0

ありがとう@Suever。私はあなたが提案したようにinpolygonを使用して終了し、凸包内の領域をマスクしましたが、元のデータ境界の外側はマスクされていました。 –

関連する問題