下面是一个程序,以某近场测点声压级频谱excel为导入数据,通过半自由场空间点声源辐射理论,求解远场声压级的例子,但是最后求解后出现最终声压级值为复数,做图时Matlab自动忽略了虚部,求出的图纵坐标为负值的情况,还请各位帮忙解答。
S=20; %总加速距离/m
L=13.5; %车辆长度
a=1; %加速度大小/m.s-2
p0=2e-5; %基准声压/Pa
h=1.2; %接收器高度/m
HF=1.6; %发动机高度/m
xf=2.76; %发动机近场测点及等效几何中心离车前端的距离/m
yf=1.4; %发动机近场测点离车纵向中心线的距离/m
disp('请输入速度v/km.h-1')
v=input('')
g=sqrt((v/3.6/a)^2+2*(S+L)/a);
tm=-v/3.6/a+g; %总匀加速运行时间/t
t=0:tm/8192:tm;
s=v/3.6*t+0.5*a*t.^2; %t时刻车辆运行距离/m
rf=sqrt((10-s+xf).^2+7.5^2+(1.2-HF)^2); %t时刻发动机距离传声器距离/m
r1=yf; %近场声压测试距离
ffj1=quajiquan(ffj); %去掉频域下发动机近场A计权后的声压级/dB
ffj2=10.^(ffj1/20)*p0; %还原成频域下发动机近场声压/Pa
ff=ifft(ffj2); %求时域下发动机近场声压/Pa
ff2=20*log10(real(ff')/p0); %求时域下发动机近场声压级/dB
L2f=ff2-20*log10(rf./r1); %t时刻时域下发动机车外远场声压级/dB
L2f2=ajiquan(L2f); %t时刻时域下发动机车外远场A计权声压级值/dB(A)
plot(t,L2f2)
xlabel('t/s'),ylabel('L2f2/dB(A)')
title('发动机声源辐射外场声压级变化')
发动机点声源辐射数据错误原因分析 程序: ffj1=quajiquan(ffj); %去掉频域下发动机近场A计权后的声压级/dB ffj2=10.^(ffj1/20)*p0; %还原成频域下发动机近场声压/Pa ff=ifft(ffj2); %求时域下发动机近场声压/Pa ff2=20*log10(real(ff')/p0); %求时域下发动机近场声压级/dB L2f=ff2-20*log10(rf./r1); %t时刻时域下发动机车外远场声压值/dB L2f2=ajiquan(L2f); %t时刻时域下发动机车外远场A计权声压级值/dB(A) 最大值: max(ffj)=86.2589 %频域近场A计权最高声压级/dB(A) max(ffj1)=87.0589 %频域近场最高声压级/dB max(ffj2)=0.4589 %频域近场最高声压/Pa max(ff)=0.0194-0.0000i %时域近场最高声压/Pa max(ff2)=59.7554 %时域近场最高声压级/dB max(L2f)=-67.0838+27.2875i %时域远场最高声压级/dB max(L2f2)=-74.4094+27.2875i %时域远场A计权最高声压级/dB(A)
附:之前发动机的程序,里面有一个所用的数据错了,被我改过来了,但不影响总体分析趋势,最终结果仍为负值形式,如下图1
对照这个图和上面的最大值分析对比发现: (1)在时域下近场最高声压级为正,是实数,为取ifft变换后的实部所 致。 (2)在时域下远场最高声压级却是复数,实部为负,实部的绝对值大于近 场声压级值 。 (3)运行程序时matlab窗口提示虚部被忽略,也就是说,在matlab最终做出的图形上,是没有虚部的,按实部做图,做出的结果纵坐标就是负数,如下图2
这就是问题是所在了,可是,为什么会这样?
|