Araçlar

Hoparlör Gruplama için MATLAB Kodu

Aşağıdaki Matlab kodu yönlülüğü bilinen hoparlörlerin gruplanması durumunda ortaya çıkan dağılımları gösteriyor. Bu kodu basit anlatımlarda kullanmak üzere yazdım. Bu tip bir gösterimi hızlıca yapmaya imkan veren bir paket program bildiğim kadarıyla yok. (EASE yapıyor ancak frekans ölçeklemesi gerekli)

Yönlülük bilgisi için hoparlörün Common Loudspeaker Format dosyası ya da CATT yazılımının formatı olan SD2 dosyası kullanılabilir. Amacınız kardiyoid subwoofer tasarımı ise buna bile gerek olmayacaktır, kaynakları her yöne eş güçte tanımlayabilirsiniz.

%tüm birimler dm cinsinden
%frekans için 25Hz birinci satır. Her bir satır 1/3 oktav ötesi.
%nf frekans numarasını belirtir nf=1 25Hz olup diğer frekanslar 1/3 oktav ara ile sıralanmıştır
%% Ortam Şartları
c=3440;%dm/s
%% Yatay Yönlülük Bilgisi (15°)
dir.a.d(6,:)=[0 0 0 0 0 -1 -1 -1 -1 -2 -2 -3 -4];
dir.a.d(7,:)=[0 0 0 -1 -1 -1 -2 -2 -3 -4 -5 -6 -8];
dir.a.d(8,:)=[0 -1 -1 -2 -3 -4 -5 -6 -7 -9 -12 -16 -22];
dir.a.co=[0 15 30 45 60 75 90 105 120 135 150 165 180];
%% Kaynaklar
%src[konum x,konum y,rot h,rot v,directivity dosyası,delay (ms),SPL@1m]
src=[45,48,0,0,{dir.a},0,100;
36.4,50,0,0,{dir.a},-2.5,106;
45,52,0,0,{dir.a},0,100];
%% Hesaplama
for nf=[6 7 8]
f=25*2^((nf-1)/3)
k=2*pi*f/c;%wave number
for s=1:size(src,1), for x=1:100, for y=1:100;
vect(y,x)=x-src{s,1}+i*(y-src{s,2});
end,end
dirs=src{s,5}.d(nf,:); dirc=src{s,5}.co;
dist=abs(vect);
theta=abs(angle(vect)/pi*180); %abs çünkü kaynak simetrik
sp(:,:,s)=(10^(src{s,7}/20))*(1./dist).*exp(i.*(dist+c*src{s,6}/1000)*k).*10.^(pchip(dirc,dirs,theta)/20);
end
spo(:,:,nf)=abs(conj(sum(sp,3)).*sum(sp,3));
 db(:,:,nf)=10.*log10(spo(:,:,nf));
% Plot
pause
pcolor(db(:,:,nf)), colorbar
title(['@' num2str(round(f)) 'Hz'])
end

Bu kodun çalışması halinde çıkan üç grafik aşağıdaki gibidir. Burada yapılan, 100Hz’e ayarlı bir kardiyoid subwoofer array’idir.

80 Hz Dağılımı

100 Hz Dağılımı

125 Hz Dağılımı