指向性をもったスピーカの音圧分布のプロットについて
Show older comments
現在自分はアクティブノイズコントロールについての研究を行おうと思っており、研究をおこなうに当たって、自由音場において適当に配置した無数のスピーカがどのような音場を作るのか(自分もこの分野に対しての知識がまだ浅いためこの言い方が正しいかはわかりませんが)というものをシミュレーション上で見れないかということを模索しています。理想は3次元で音圧分布が可視化できればと思っています。難しければ2次元でも構いません。
現在自分で行ったこととしては、とある書籍で進行波の音圧の複素実効値が以下の式であらわせるというものをみてこの式をもとに計算結果をプロットしてみました。
kが波数、ρが密度(自分が再現しようとしている音場では空気の密度だと思っています)
Aが適当な定数、rが音源からの距離です。
この式を使いプロットを行うことで、点音源が自由音場においてどのような音圧分布を作るかということは可視化することができたのですが、ここから一般的なスピーカのようにある程度の指向性を持たせる方法が分からず困っています。今の使用している式では距離でのみ音圧が決まると思うのですが、そうではなく、スピーカの正面は音圧が高く、後ろ側は音圧が低いというようなものを作成したいと思っています。
MATLAB上でそのような物理的なシミュレーションを行うことは可能でしょうか?
参考までに現在作成しているプログラムを載せておきます
function a = Three_dimention_soundsource_monopole(f,max,interval,min)
% 定数定義
w = 2*pi*f;
lambda = 340/f;
k = 2*pi/lambda;
p = 1.293;
c = 340
A = 1/k^2*p*c
% 計算部
[X,Y,Z] = meshgrid(min:interval:max);
x1 = X;
y1 = Y - max/2;
z1 = Z;
x2 = X - max/2;
y2 = Y ;
z2 = Z ;
x3 = X + max/2;
y3 = Y ;
z3 = Z ;
x4 = X ;
y4 = Y + max/2
z4 = Z ;
x5 = X - max/(2*sqrt(2));
y5 = Y - max/(2*sqrt(2));
z5 = Z ;
x6 = X + max/(2*sqrt(2));
y6 = Y + max/(2*sqrt(2));
z6 = Z ;
x7 = X + max/(2*sqrt(2));
y7 = Y - max/(2*sqrt(2));
z7 = Z ;
x8 = X - max/(2*sqrt(2));
y8 = Y + max/(2*sqrt(2));
z8 = Z ;
soundsorce1 = 1i*w*p*A/sqrt(x1.^2+y1.^2+z1.^2).*exp(-1i*k*sqrt(x1.^2+y1.^2+z1.^2));
soundsorce2 = 1i*w*p*A/sqrt(x2.^2+y2.^2+z2.^2).*exp(-1i*k*sqrt(x2.^2+y2.^2+z2.^2));
soundsorce3 = 1i*w*p*A/sqrt(x3.^2+y3.^2+z3.^2).*exp(-1i*k*sqrt(x3.^2+y3.^2+z3.^2));
soundsorce4 = 1i*w*p*A/sqrt(x4.^2+y4.^2+z4.^2).*exp(-1i*k*sqrt(x4.^2+y4.^2+z4.^2));
soundsorce5 = 1i*w*p*A/sqrt(x5.^2+y5.^2+z5.^2).*exp(-1i*k*sqrt(x5.^2+y5.^2+z5.^2));
soundsorce6 = 1i*w*p*A/sqrt(x6.^2+y6.^2+z6.^2).*exp(-1i*k*sqrt(x6.^2+y6.^2+z6.^2));
soundsorce7 = 1i*w*p*A/sqrt(x7.^2+y7.^2+z7.^2).*exp(-1i*k*sqrt(x7.^2+y7.^2+z7.^2));
soundsorce8 = 1i*w*p*A/sqrt(x8.^2+y8.^2+z8.^2).*exp(-1i*k*sqrt(x8.^2+y8.^2+z8.^2));
anser = abs(soundsorce1 + soundsorce2 + soundsorce3 + soundsorce4 + soundsorce5 + soundsorce6 + soundsorce7 + soundsorce8);
xslice = 0;
yslice = [];
zslice = 0;
% プロット部
slice(X,Y,Z,anser,xslice,yslice,zslice)
title('3次元空間の音圧分布')
xlabel('x[m]')
ylabel('y[m]')
zlabel('z[m]')
c = colorbar;
Accepted Answer
More Answers (0)
Categories
Find more on オーディオとビデオ in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!