球面プロット

matlabの球面プロットについて

 

球面プロットは極座標からx,y,z座標に直して描画する。

表面のアニメーション化 - MATLAB & Simulink Example - MathWorks 日本

全部書いてある用でかゆいところに手が届きにくいmatlabのドキュメント

 

最初に角度のメッシュ情報を作ります。

真ん中のforループはシータ方向に変化させたものを並べている。Φ方向の行列処理の準備を兼ねている。

本来ならそのまま突っ込めばいいが、legendre関数の出力があるjのすべてのmについて配列で吐き出してくるのでこんな手順を踏んでいる。

確かにthetaをそのまま突っ込むと非常にめんどくさい状態に・・・

 

つぎの行列の掛け算で一気にファイ成分を処理

ちょっと振動処理をかけてrho(動径)を計算

 

最後に極座標からx,y,z座標に変換

r = rho.*sin(theta);
x = r.*cos(phi); y = r.*sin(phi); z = rho.*cos(theta);

 

球面座標の出力については終わり

 

球面調和関数は扱いがめんどくさいので、頑張って出力とにらめっこ

下に書いてみた球面調和関数のコード

function ret = spherical_harmonics(J,m,theta,phi)
leg = legendre(J,cos(theta(:,1)),'norm');
temp = [];
for i = 1:size(theta,1)
temp = [temp leg(abs(m)+1,:)'*(-1)^*1/2)];
end
temp = temp.*exp(1i*m*phi);
ret = temp/((2*pi)^0.5);
end

*1:m+abs(m