2017-04-26 11 views
0

3D空間にいくつかの球を表示したいと思います。それぞれの中心点と半径は異なります。だから私はMatlabのチュートリアルに従って、次の結果を得ました。唯一の問題は、何百もの球を描画して何百行も書き込むことができないことです。サーフェス()関数を行列入力で使用する方法はありますか?たぶん、x、y、z行列でsurf(x、y、z)?ありがとう!MATLABマトリクスを使用した3Dでのいくつかのサーフェスプロット

hold on; 
[x,y,z] = sphere; 
r = 50; 
s1 = surf(x*r,y*r,z*r,'FaceAlpha',0.1); 
s2 = surf((x+3)*r,(y-2)*r,z*r,'FaceAlpha',0.1); % centered at (3,-2,0) 
s3 = surf(x*r,(y+1)*r,(z-3)*r,'FaceAlpha',0.1); % centered at (0,1,-3) 

s1.EdgeColor = 'none'; 
s2.EdgeColor = 'none'; 
s3.EdgeColor = 'none'; 

enter image description here

+0

'X'、 'y'としてcx,cy,czを変更'z'はすでに(2D)行列です。なぜforループを使わないのですか? – m7913d

+0

実際にあなたは正しいです!なぜ私はforループを考えていないのかわかりませんが、forループを使って何百もの球をプロットするのに時間がかかりませんか?とにかく感謝します! – jiayi

答えて

1

あなたはほとんどそこにある....一般的な形でそれを書く:

s = surf((x-cx)*r,(y-cy)*r,(z-cz)*r,'FaceAlpha',0.1); 

が今だけループ

+0

ありがとう、私はループがうまくいくと思います!なぜ私がここにくっついているのか分からない:) – jiayi

関連する問題