[已解决] 瞬时声压时域数据怎么用matlab进行1/3倍频程声压级分析

  [复制链接]
yetian12 发表于 2016-9-9 18:15:55
学习了,谢谢!

小源咩 发表于 2016-12-22 19:57:41

你们好,bk声级计得到的是声压级和时间关系图,可以转化成声压(有正有负)时域图么???

小源咩 发表于 2016-12-22 19:58:01

你们好,bk声级计得到的是声压级和时间关系图,可以转化成声压(有正有负)时域图么???

1457937402 发表于 2017-1-3 21:33:24
本帖最后由 1457937402 于 2017-1-3 21:34 编辑
simplebinbin 发表于 2014-5-21 10:54
根据这两种方法计算结果还是有一些差别的,前一种方法称为方法1,后一种为方法2。计算abc.wav数据中前4s时 ...

我也是用BK声级计测得的wav文件,我用lz的程序做了分析1/3倍频程分析,得到了图一,但BK声级计上显示的图像却是图二,为什么差别这么大。
QQ图片20170103213537.png
QQ图片20170103213459.png

simplebinbin 发表于 2017-3-24 09:57:51
小源咩 发表于 2016-12-22 19:58
你们好,bk声级计得到的是声压级和时间关系图,可以转化成声压(有正有负)时域图么??? ...

声压级转换为声压时域图,这个比较困难,因为缺失了太多数据;
IFFT变化需要有幅值信息与相位信息才准确。
当然,不知道是否有其他方法,我目前没有接触到,你找到了可以发到帖子里,大家一起学习

simplebinbin 发表于 2017-3-24 10:15:00
1457937402 发表于 2017-1-3 21:33
我也是用BK声级计测得的wav文件,我用lz的程序做了分析1/3倍频程分析,得到了图一,但BK声级计上显示的图 ...

BK的wav文件做了归一化处理的,需要将导出的时域数据乘一个归一化系数,这个系数你自己计算,用校准仪给声级计一个激励(1000Hz纯音),采集一段时间数据,连续等效声压级为94dB,你用导出的wav时程数据计算,归一化系数为多少时,可以计算得到94dB

libaochuan 发表于 2017-5-5 17:28:15
你好,我在进行噪声噪声信号处理时,因为振动信号跟噪声信号的单位不同,这时候软件处理的时候也提到了归一化处理,我不是很理解你说的归一化跟这个归一化是怎么回事,可以帮我解释一下归一化是怎么回事么,或者原理是什么。

simplebinbin 发表于 2017-5-8 16:35:36
libaochuan 发表于 2017-5-5 17:28
你好,我在进行噪声噪声信号处理时,因为振动信号跟噪声信号的单位不同,这时候软件处理的时候也提到了归一 ...

一般时域信号归一化后幅值在[-1 1]之间,就是将信号除以其中最大数值的最绝对值;但是不同测试软件导出的数据归一化方式不一样,你可以咨询你用的测试软件公司,LMS测试软件导出的wav文件,幅值在[-1 1]之间,BK的不是
原理啥的你网上查一下就行。

libaochuan 发表于 2017-5-10 16:28:40
simplebinbin 发表于 2017-5-8 16:35
一般时域信号归一化后幅值在[-1 1]之间,就是将信号除以其中最大数值的最绝对值;但是不同测试软件导出的 ...

对,因为BK的分析软件里没有进行归一化吧,我也查了归一化的原理跟你说的差不多,可是我不太明白的是振动信号跟声信号归一化以后求传函,求出的传函还能准确么,我现在是在编程求传函,将其应用到传递路径中去,测试过程中激励有声信号,单位是pa,有振动信号,单位是m/s2,响应信号时声信号,要求每条路径的传函,bbm公司里研发的pak软件里这时求传函应用到了normalization,所以我才问,这时怎么进行的,基于什么样的原因进行的,进行归一化的原理是什么。你可以帮我解释一下么。

libaochuan 发表于 2017-5-10 16:38:03
songzy41 发表于 2016-1-29 21:26
1,有关LZ用了13633进行能量修正,可以参看:
https://www.ilovematlab.cn/thread-35655-1-1.html
2,IFFT变 ...

宋老师,我现在在用迭代算法编程求传函,将其应用到传递路径中去,测试过程中激励有声信号,单位是pa,有振动信号,单位是m/s2,响应信号时声信号,要求每条路径的传函,然后利用输入信号与传递函数求解每条路径对于响应点的贡献量,bbm公司里研发的pak软件里这时求传函应用到了normalization,我想请教您一下以您多年的经验觉得此处是出于统一单位求传函的原因进行归一化的么,以及进行归一化的原理是什么,我查不到这方面的资料,我的理解就是为了统一振动信号与声信号的单位进行的,可是又不知道如何进行的,老师,您可以给我解释一下么

songzy41 发表于 2017-5-11 12:21:22
libaochuan 发表于 2017-5-10 16:38
宋老师,我现在在用迭代算法编程求传函,将其应用到传递路径中去,测试过程中激励有声信号,单位是pa,有 ...

很抱歉,因为完全不了解pak软件,可能帮不上忙。

libaochuan 发表于 2017-5-11 14:48:55
songzy41 发表于 2017-5-11 12:21
很抱歉,因为完全不了解pak软件,可能帮不上忙。

这个跟pak软件关系不大,就是一个在求传函的过程中,因为输入有振动信号以及噪声信号,响应测点是噪声信号,在求传函的时候会由于量纲不统一,所以需要进行归一化处理,我这个快就是不太明白,如何进行归一化,具体怎么处理。老师,您在处理振动信号和噪声信号的过程中没有遇到过类似的情况么?

simplebinbin 发表于 2017-5-15 08:51:39
libaochuan 发表于 2017-5-10 16:28
对,因为BK的分析软件里没有进行归一化吧,我也查了归一化的原理跟你说的差不多,可是我不太明白的是振动 ...

BK导出的数据也是进行处理了的,前面的帖子有说明。对于你的归一化后求传函这个问题,不是很懂。正常求没有问题。

baiweiqaz 发表于 2017-5-24 15:27:34
本帖最后由 baiweiqaz 于 2017-5-25 08:58 编辑
simplebinbin 发表于 2017-5-15 08:51
BK导出的数据也是进行处理了的,前面的帖子有说明。对于你的归一化后求传函这个问题,不是很懂。正常求没 ...

楼主,你好,我用你的程序去进行1/3倍频程计算,结果有问题,楼主帮忙看下
fs=25000;%采样频率
p0=2e-5;%参考声压

f=[1.00 1.25 1.600 2.00 2.50 3.15 4.00 5.00 6.30 8.0]; %基准中心频率
f1=[20.00 25.0 31.5 40.0 50.0 63.0 80];
fc=[f1,100*f,1000*f,10000*f]; %%%%%%%%%中心频率%%%%%%%%
%20-16000Hz A声级计权值
cf=[-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];


x=signal;%截取需要处理的数据段
n=length(x);

subplot(221);
plot(t,x);%瞬时声压时程图

w=hanning(n);    %汉宁窗
xx=1.633*x.*w;         %加汉宁窗(恢复系数为1.633)


nfft=2^nextpow2(n);
%nextpow2(n)-取最接近的较大2次幂
a = fft(xx,nfft);
f = fs/2*linspace(0,1,nfft/2);

w=2*abs(a(1:nfft/2)/n);
subplot(222);
plot(f,w);%绘制频谱图
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%1/3倍频程计算
oc6=2^(1/6);
nc=length(cf);
%下面这个求1/3倍频程的程序是按照振动振级计算那个来的
for j=1:nc
    fl=fc(j)/oc6;
    fu=fc(j)*oc6;
    nl=round(fl*nfft/fs+1);
    nu=round(fu*nfft/fs+1);
    if fu>fs/2
        m=j-1;
        break;
    end
   
    b=zeros(1,nfft);
    b(nl:nu)=a(nl:nu);
    b(nfft-nu+1:nfft-nl+1)=a(nfft-nu+1:nfft-nl+1);
    c=ifft(b,nfft);
    yc(j)=sqrt(var(real(c(1:n))));
   
end

aj_sumn=0;
for i=1:nc
    Lp1(i)=20*log10(yc(i)/p0);%未计权1/3倍频程声压级
end

%%%%%
for jj=1:nc
     aj_sumn=aj_sumn+10^(0.1*Lp1(j));
end
Lp=10*log10(aj_sumn);%未计权总声压级
subplot(223);%绘制未计权1/3倍频程声压级图谱

运行的结果是:试图访问 yc(29);由于 numel(yc)=28,索引超出范围。

b.txt

27.34 KB, 下载次数: 9

第一列为时间t,第二列为声压signal


simplebinbin 发表于 2017-5-26 09:55:23
baiweiqaz 发表于 2017-5-24 15:27
楼主,你好,我用你的程序去进行1/3倍频程计算,结果有问题,楼主帮忙看下
fs=25000;%采样频率
p0=2e-5;% ...

你的采样频率低,分析不到16000Hz,你只能分析到10000Hz,把A声级修正值10000Hz后面的值删掉即可,如下
cf=[-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];

baiweiqaz 发表于 2017-5-27 08:21:00
simplebinbin 发表于 2017-5-26 09:55
你的采样频率低,分析不到16000Hz,你只能分析到10000Hz,把A声级修正值10000Hz后面的值删掉即可,如下
cf= ...

哦,还真是,谢谢楼主。

baiweiqaz 发表于 2017-5-27 08:26:00
小源咩 发表于 2016-12-22 19:57
你们好,bk声级计得到的是声压级和时间关系图,可以转化成声压(有正有负)时域图么??? ...

你好,你把声压级和时间关系图变化为声压时域图做到了吗?我也在做相同的变化,想请教下。

wjdwin 发表于 2017-9-6 12:25:34
我有一个问题。如果我是用程序仿真得到的一段声压数据p,并对它做1/3倍频程分析,那么程序中的参考声压p0应该用什么数据呢?

mark8906 发表于 2017-12-20 10:09:27
songzy41 发表于 2014-5-14 14:40
LZ在声压计中对于p0肯定不是一个设置的值:p0=2e-5;%参考声压,而是通过标准信号发生器对了传声器发出一个 ...

您好,宋老师。 我根据您此处的回复有下面几个问题?后面的回复暂且不论。
1,1000HZ标准信号是什么信号呢?正弦?
2,您说p0不是一个设置的值,但是您又说p0=2e-5帕没有错?这个参考声压是怎么来的?输入标准1000HZ信号,然后测传声器这端输出的电压信号,再根据传声器灵敏度算出来的吗?
3,进行1/3倍频程声压级计的时候,原始信号与参考信号的单位统一就可以了吧?不管单位是pa还是mv,V这样?

songzy41 发表于 2017-12-20 19:58:05
1,1000HZ标准信号是正弦信号。
2,p0=2e-5帕是国际标准,可参看声学基础中声压级方面的内容。一般是用声级计的校正器来进行校正。
3,声级计接收的都是声压,以pa为单位,经AD转换成电压,单位转成mv或V。

mark8906 发表于 2017-12-28 09:50:11
songzy41 发表于 2017-12-20 19:58
1,1000HZ标准信号是正弦信号。
2,p0=2e-5帕是国际标准,可参看声学基础中声压级方面的内容。一般是用声级 ...

谢谢您的解答。
我还发了一个基础贴,有很多人浏览,但是没人回复,我的问题应该不清楚吧?希望您有时间了帮我看下?如果问题没异常还请帮我解答下啊。
假设我用48KHZ采样一段最高频率13K的噪声信号,进行4096点的FFT,我是用48KHZ采样1秒的样本再任意抽取4096点进行FFT计算还是直接连续采集4096点数的样本计算,这4096点的数据我还需要加窗进行分析吗?谢谢了,希望哪位朋友能帮我解答下。     ----   非matlab使用者

songzy41 发表于 2017-12-28 21:09:31
mark8906 发表于 2017-12-28 09:50
谢谢您的解答。
我还发了一个基础贴,有很多人浏览,但是没人回复,我的问题应该不清楚吧?希望您有时间 ...

既然采集了1秒样本,对于噪声来说用统计的方法更好,所以建议用 pwelch函数计算功率谱,其中把nfft设为4096,这样结果为4096长。

mark8906 发表于 2017-12-29 08:48:28
songzy41 发表于 2017-12-28 21:09
既然采集了1秒样本,对于噪声来说用统计的方法更好,所以建议用 pwelch函数计算功率谱,其中把nfft设为40 ...

好的,谢谢。

mark8906 发表于 2018-1-10 10:42:41
本帖最后由 mark8906 于 2018-1-10 10:50 编辑
songzy41 发表于 2017-12-28 21:09
既然采集了1秒样本,对于噪声来说用统计的方法更好,所以建议用 pwelch函数计算功率谱,其中把nfft设为40 ...

您好,宋老师。 关于这个帖子计算1/3倍频程声压级的程序,我还有两处疑问。

1,下面复制的是15楼的部分计算过程。在这个计算中总声压级用LA = 10lg10^(aj_sum/10),这个公式我搜了下与计算等效连续A声级的公式差不多,但是没有对时间取平均。

%%%%%A计权1/3倍频程声压级
Lap=Lp1+cf;
aj_sum=0;
for j=1:nc
    aj_sum=aj_sum+10^(0.1*Lap(j));
end
LA=10*log10(aj_sum);%Aa计权总声压级

2,另外IEC61672规范中,对声压级的计算还需包含时间计权,这个帖子实现的计算中并没有包含这部分啊?在1/3倍频的中心频率点上的有效声压平方加时间计权可以吗?


等效连续声级计算

等效连续声级计算

时间计权数据模型

时间计权数据模型

songzy41 发表于 2018-1-10 20:32:51
mark8906 发表于 2018-1-10 10:42
您好,宋老师。 关于这个帖子计算1/3倍频程声压级的程序,我还有两处疑问。

1,下面复制的是15楼的部分计 ...

1,对于脉冲声可以对时间取平均
2,可以加时间计权
您需要登录后才可以回帖 登录 | 注册

本版积分规则

热门教程
站长推荐
快速回复 返回顶部 返回列表