找回密码
 注册
Simdroid-非首页
查看: 55|回复: 1

Matlab点声源仿真中数据实部虚部的问题

[复制链接]
发表于 2014-5-7 18:56:30 | 显示全部楼层 |阅读模式 来自 江苏镇江
下面是一个程序,以某近场测点声压级频谱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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2014-5-12 15:37:35 | 显示全部楼层 来自 江苏南京
Simdroid开发平台
受教了,感觉怎么都这么厉害
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-7-3 07:23 , Processed in 0.028376 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表