2017-12-12 9 views
0

私は3Dの雲があります。私はそれらを表面としてプロットする必要があります。私はmeshdrid、griddata、scatteredInterpolant、trisurf-delaunayで変形を試みました。何も動作しません。私はこの質問が多く議論されたことを知っていますが、私はいくつかの重要な詳細を理解していないようです。私は今持っているコード:表面機能でそれを描画する方法を見つけるためにmatlabに3D雲の表面を描く

1): enter image description here

は、あなたが私を助けてもらえ:

load('coords.mat') 
figure() 
subplot(1,2,1) 
plot3(x,y,z,'.') 
axis off 
view(3) 

subplot(1,2,2) 
C=gray(numel(x)); % unsuccessful attempt 
[~,idx]=sort(z); %  to have 
C=C(idx,:);  % illumination 
scatter3(x,y,z,50,C,'filled') 
axis off 
view(3) 

には、以下の画像を生成します。

と、いくつかのドットが「見えない」ドットを削除する方法)(それは私の問題である可能性がある)表面の内側に

2かもしれ?など

さまざまなケースでは解決策が必要ですが、画像とデータは単なる例です。

マットファイルはhereからダウンロードできます。

P.S.

重要な場合 - このドットの座標をランダムベジエ曲線の回転として取得します。上記の場合のデータで

UPDATE

私はドット量の少ない別のセットを生成大きすぎる:

enter image description here

座標はhereです。

答えて

1

このデータはどこから入手できますか?これはベクトルとして表されますが、行列に再構成すると、surf関数を使用できます。このコードを試してください:

z=reshape(z,100,100); 
y=reshape(y,100,100); 
x=reshape(x,100,100); 
surf(x,y,z) 
+0

Coool !!!ありがとう!!私はこれらのベクトルを自分で生成します - それは私の質問のために長くて重要ではないコードです。 – zlon

+0

申し訳ありませんが、私は愚かな問題を抱えていますが、必ずしもx、y、zが正方行列に再構成されているとは限りません(2番目のデータセットを参照)。私はいくつかの補間を経由する必要がありますか? – zlon

+0

@ zlonこれはデータがどこから由来したかについて話したかった理由です。あなたのベクトルはx方向のスライスです。これは、サイズが100x100で再成形された理由です。正方形の数ではなく、スライスが100個あるからです。小さなデータセットの場合は、サイズを100x60に変更する必要があります。これらのことは、データを作成するときに制御しやすくなります。 –