难渡秋心 发表于 2014-5-7 19:16

关于应用Matlab进行点源模拟分析后取值实部虚部的问题


下面是一个程序,以某近场测点声压级频谱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计权后的声压级/dBffj2=10.^(ffj1/20)*p0;            %还原成频域下发动机近场声压/Paff=ifft(ffj2);                      %求时域下发动机近场声压/Paff2=20*log10(real(ff')/p0);          %求时域下发动机近场声压级/dBL2f=ff2-20*log10(rf./r1);         %t时刻时域下发动机车外远场声压值/dBL2f2=ajiquan(L2f);                %t时刻时域下发动机车外远场A计权声压级值/dB(A)最大值:max(ffj)=86.2589               %频域近场A计权最高声压级/dB(A)max(ffj1)=87.0589            %频域近场最高声压级/dBmax(ffj2)=0.4589               %频域近场最高声压/Pamax(ff)=0.0194-0.0000i          %时域近场最高声压/Pamax(ff2)=59.7554               %时域近场最高声压级/dBmax(L2f)=-67.0838+27.2875i      %时域远场最高声压级/dBmax(L2f2)=-74.4094+27.2875i   %时域远场A计权最高声压级/dB(A)

附:之前发动机的程序,里面有一个所用的数据错了,被我改过来了,但不影响总体分析趋势,最终结果仍为负值形式,如下图1
对照这个图和上面的最大值分析对比发现:(1)在时域下近场最高声压级为正,是实数,为取ifft变换后的实部所致。(2)在时域下远场最高声压级却是复数,实部为负,实部的绝对值大于近场声压级值 。(3)运行程序时matlab窗口提示虚部被忽略,也就是说,在matlab最终做出的图形上,是没有虚部的,按实部做图,做出的结果纵坐标就是负数,如下图2



这就是问题是所在了,可是,为什么会这样?




ChaChing 发表于 2014-5-7 23:36

个人水平有限, 实在看不清到底LZ问甚麼问题?
页: [1]
查看完整版本: 关于应用Matlab进行点源模拟分析后取值实部虚部的问题