2016-07-23 2 views
0

x、y座標と対応する関数値z(x、y)の3次元表面をプロットするとき、基本的にデータポイントを増やしたいと考えています。 問題は、私の座標が単調増加せず、Matlabで2次元補間を使用できないということです。Matlab:単調でない座標値と関数値の組み合わせを補間する

少数第一の行のための典型的なX、Y、Zの組み合わせは次のように見えるかもしれない

15 15 184700.882736683 
15 30 215486.921407234 
15 45 205691.389050234 
15 60 215486.897031495 
15 75 209662.528668203 
15 90 215486.908134438 
15 105 211342.684211922 
15 120 215486.920131923 
15 135 212270.488286479 
15 150 215486.917843900 
30 30 275146.369280109 
30 45 262639.083693416 
30 60 275146.334615114 
30 75 267709.604291106 
30 90 275146.361678640 
30 105 269854.818605481 
30 120 275146.331709932 
30 135 271039.490475350 
30 150 275146.317264820 
30 15 235837.965849192 

実際に私はそれらの散布図をプロットする、または関数meshgridプロットを使用して3D表面をそれらのうち、しかしのですることができ私のデータ値は少なく、いずれかの値の間に値のジャンプがないことを知っています。補間によってデータポイントの数を増やし、3Dサーフェスを細かく見えるようにしたいだけでした。

私はすでに123、および4を読んだが、私の場合は、3D 1であるので、それらの非は具体的には、私の問題の解決策に取り組みます。

私の質問に重複してコピーしないでください。ちょうどタイトルをグーグルで。ありがとう。

+0

あなたは 'x'と' y'の関数として 'z'を持っています。我々は、通常、その2D補間と呼ぶ。リンクしたソリューションで何が問題になっていますか? – Suever

+0

実際にあなたが補間2Dを試したいのであれば、あなたのデータは単調に増加していないというエラーが出て、z = f(x、y)なので、この単調な問題を解決する方法はわかりません。 'x'は単調であるがyはありません.zは明らかに非単調に変化する関数値です。 – Soyol

+0

あなたがリンクしているすべてのスレッドは非単調なデータを処理します。 – Suever

答えて

1

あなたのデータが散在しているので、あなたは、与えられたxyためzを補間するgriddataまたはscatteredInterpolantのいずれかを使用する必要があります。

griddataを使用した簡単な例です。

% Sample at 1000 evenly spaced points over the x/y plane. 
[xq, yq] = meshgrid(linspace(min(x), max(x), 1000), ... 
        linspace(min(y), max(y), 1000)); 

zq = griddata(x, y, z, xq, yq); 

surf(xq, yq, zq) 

% Plot the original points as reference 
hold on 
plot3(x, y, z, 'o') 
+0

ありがとう、それは最善の方法です – Soyol

+0

注:新しいMatlabバージョンでは、 'TriScatteredInterp'が' ScatteredInterpolant'に名前変更されたと思います。 –

+1

@TasosPapastylianouはい、あります。私の脳は明らかに機能しませんでした。 MATLABの非推奨率に追いつかない。 – Suever

関連する問題