プロが教える店舗&オフィスのセキュリティ対策術

現在matlabで音の伝搬の様子をアニメーションというか、球面波(平面波)を可視化したいのですが、調べても方法がよくわかりません。
自由空間におけるグリーン関数(点音源)の式を利用して任意の距離の点での音圧はプログラムで求め、それを逆FFTして時間領域に変換はしました。(時間領域にしないとおかしいですよね?)

ですので、今のところ任意の点での音圧の時間変化(インパルス応答)はでています。

A 回答 (1件)

音波がらみの式については詳しくないのですが…


平面波を可視化するとはどのようなことをイメージされているのでしょうか?
例えば
X0=(0:5e-3:10)';
Y0=(0:1)';
phai=(0:1e-2:6)'*pi;
[X Y]=meshgrid(X0,Y0);
figure(1);
h_surf=surf(X,Y,zeros(size(X)));
set(gca,'ClimMode','Manual','Clim',[-1 1],'Zlim',[-3 3]);
set(h_surf,'EdgeColor','None');
for k=1:length(phai);
set(h_surf,'Zdata',sin(X*pi-phai(k)));%…(※)
drawnow;
end;
みたいに書くと平面波が進んでいく様子が見えますが、このようなものを作りたいのでしょうか?
もしそうだとするならば、アニメーションを作る中で重要になるのは(※)の行です。
(その前は全部下準備です)
(※)の行で波の上下方向の座標を変えることで波が進んでいるように見せています。
また、そのすぐ下の行のdrawnowで即座に波を描かせるようにしています。
このようなアニメーションを作る時には、
>任意の点での音圧の時間変化(インパルス応答)
よりは「ある時間における全ての点での音圧の変化を記述する行列」があった方がうれしいと思います。
(まあ行列の作り方をちょっと変えるだけですが)

的外れな回答でしたらすみません。その旨補足欄に書いていただければもう少し的を射た回答ができるかも知れません。

長文失礼しました。参考になれば幸いです。
    • good
    • 0
この回答へのお礼

参考にさせていただきます。ありがとうございました。

お礼日時:2010/08/02 18:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!