1

MATLAB以下のコードを使用して3D サーフェスを作成しました。

p = patch ( 'Vertices' , XYZ , 'Faces' , F ) ;

set ( gca , 'CLim' , [-2000 1500] ) ;

set ( p , 'FaceColor' , 'interp' , 'FaceVertexCData' , V , 'EdgeColor' , 'none' , ...

... 'CDataMapping' , 'scaled' ) ;

axis 'equal'; 
axis 'tight';
set(gca, 'YDir','normal');

ここXYZ352x3、 は 3D サーフェスの点の座標を含む行列です。 Fポイントを接続する面を含む700x3行列です。 3D サーフェスの 352 点のそれぞれの値を含む行列ですV352x1

これが問題です:サーフェスに 3D 等高線をプロットするにはどうすればよいですか !!?

私はすでにcontour3関数を試しましたが、入力行列が現在とは異なる次元である必要があります。(meshgrid を使う必要があるかもしれませんが、残念ながら私の XYZ 点は不規則に分布しています。ただし、パッチ関数を使用しているため、これができるかどうかはわかりません。)

これについて私を助けてください。

4

1 に答える 1

1

おそらく考えられる解決策の 1 つは、データを通常のメッシュに補間してからcontour3関数を使用することです。機能についてはマニュアルを確認してくださいTriScatteredInterp。簡単に言えば、最初に内挿を作成する必要があります。

F = TriScatteredInterp(XYZ(:,1), XYZ(:,2), XYZ(:,3));

次に、正規の位置で内挿を評価しqx(qyで取得meshgrid)、対応する値を取得する必要がありますqz

ti = 0:0.1:10;
[qx, qy] = meshgrid(ti, ti);  
qz = F(qx, qy);

最後に、次を使用できますcontour3

contour3(qx, qy, qz, 30);

それが役に立てば幸い。

于 2013-02-16T17:52:23.243 に答える