声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3254|回复: 4

[综合] 请教通过三分之一倍频程计算声压级

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

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

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

x
我已经得到了声压信号
通过下面的程序进行三分之一倍频程滤波
function [p,ff] = oct3bank(noi);
pi = 3.14159265358979;
Fs = 500000;    %1/(t(2)-t(1));     % Sampling Frequency
N = 3;      % Order of analysis filters.
%f=[1.00 1.25 1.60 2.00 2.50 3.15 4.00 5.00 6.300 8.00]
ff=[20 25 31.5 40 50 63 80 100 125 160 200 250 315 400 500 630 800 1000 1250 1600 2000 2500 3150 4000 5000 6300 8000 10000 12500 16000]
%ff = ((2^(1/3)).^[0:19]);  % Exact center freq.  
p = zeros(1,30);
% Design filters and compute RMS powers in 1/3-oct. bands
for i = 1:30
   [B,A] = oct3dsgn(ff(i),Fs,N);
   y = filter(B,A,noi);              %<-----滤波器
   p(i) = sqrt(var(y));        %得到rms
end

function [B,A] = oct3dsgn(Fc,Fs,N);

pi = 3.14159265358979;
f1 = Fc/(2^(1/6));
f2 = Fc*(2^(1/6));
Qr = Fc/(f2-f1);
Qd = (pi/2/N)/(sin(pi/2/N))*Qr;
alpha = (1 + sqrt(1+4*Qd^2))/2/Qd;
W1 = Fc/(Fs/2)/alpha;
W2 = Fc/(Fs/2)*alpha;
[B,A] = butter(N,[W1,W2]);

然后再算A计权的分贝值
data=csvread('F0068CH2.CSV',0,3);
%t=data(:,1);
%Fs=1/(t(1)-t(2));
noi=data(:,2);
[p,ff]=oct3bank(noi);
plot(ff,p);
Cj=[-50.5 -44.7 -39.4 -34.6 -30.2 -26.2 -22.5 -19.1 -16.1 -13.4 -10.9 -8.6 -6.6 -4.8 -3.2 -1.9 -0.8 0 0.6 1.0 1.2 1.3 1.2 1.0 0.5 -0.1 -1.1 -2.5 -4.3 -6.6]
La=0;
Lj=zeros(1,30);
for n=1:30
Lj(n)=10^(0.1*(10*log10(p(n)/(10*exp(-12)))+Cj(n)));
end
La=10*log10(sum(Lj));
这个算出来的是A计权的声功率级吗?
为什么跟实际测得差很多啊?

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

 楼主| 发表于 2008-9-7 16:22 | 显示全部楼层

回复 楼主 wangwenting 的帖子

另外,通过三分之一倍频程滤波之后得到的p,是不是表示的是功率啊?
我对于信号处理的东西很陌生,希望大家能够指点啊,谢谢!
发表于 2012-8-4 17:28 | 显示全部楼层
没加窗吧
发表于 2012-12-27 01:33 | 显示全部楼层
我也不知道什么意思啊
发表于 2013-11-15 11:14 | 显示全部楼层
请问你的问题解决了吗?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-29 02:50 , Processed in 0.061523 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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