声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2575|回复: 1

[图像处理] 关于应用Matlab进行点源模拟分析后取值实部虚部的问题

[复制链接]
发表于 2014-5-7 19:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
下面是一个程序,以某近场测点声压级频谱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
第四次做的Mattlab点声源车外噪声模拟发动机结果.png
对照这个图和上面的最大值分析对比发现:
(1)在时域下近场最高声压级为正,是实数,为取ifft变换后的实部所
致。
(2)在时域下远场最高声压级却是复数,实部为负,实部的绝对值大于近
场声压级值 。
(3)运行程序时matlab窗口提示虚部被忽略,也就是说,在matlab最终做出的图形上,是没有虚部的,按实部做图,做出的结果纵坐标就是负数,如下图2
第四次做的Mattlab点声源车外噪声模拟3matlab提示.png


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




回复
分享到:

使用道具 举报

发表于 2014-5-7 23:36 | 显示全部楼层
个人水平有限, 实在看不清到底LZ问甚麼问题?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-28 21:55 , Processed in 0.059147 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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