%A计权声压级频谱分析

clc;

clear;

close all;

%时域分析

y=wavread('abc.wav');

%频域分析

fs=51200;%采样频率

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=y(t1*fs:t2*fs);%截取需要处理的数据段

n=length(x);

t=(0:1/fs:(n-1)/fs);

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:nnn))));

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倍频程声压级图谱

bar(Lp1(1:nc));

gg=zeros(1,nc);

for i=1:nc

gg(1:nc)=fc(1:nc);

end

ggg=1:nc;

set(gca,'xtick',ggg);

set(gca,'xticklabel',gg);

%%%%%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计权总声压级

subplot(224);%绘制A计权1/3倍频程声压级图谱

bar(Lap(1:nc));

gg=zeros(1,nc);

for i=1:nc

gg(1:nc)=fc(1:nc);

end

ggg=1:nc;

set(gca,'xtick',ggg);

set(gca,'xticklabel',gg);

matlab1 3倍频程,瞬时声压时域数据怎么用matlab进行1/3倍频程声压级分析相关推荐

  1. 倍频程分析函数matlab,瞬时声压时域数据怎么用matlab进行1/3倍频程声压级分析

    %A计权声压级频谱分析 clc; clear; close all; %时域分析 y=wavread('abc.wav'); %频域分析 fs=51200;%采样频率 p0=2e-5;%参考声压 f= ...

  2. matlab实现三分之一倍频程,三分之一倍频程程序

    方法一:%A计权声压级频谱分析 clc; clear; close all; y=wavread('abc.wav'); fs=51200;%采样频率 p0=2e-5;%参考声压 f=[1.00 1. ...

  3. matlab 倍频,1/3倍频程及Matlab程序实现

    倍频程是声学里人的可听频率范围内,将声音的频谱进行一定规则的集中,变成有限的几个频点对应的强度,这样描述比较起来容易,是一种公约的描述形式. 使用1/3倍频程主要是因为人耳对声音的感觉,其频率分辨能力 ...

  4. 基于Matlab的1/3倍频程计算

    倍频程定义 倍频程表示的是相应倍频程带内的功率(能量)之和,其详细理论课参考其他文章,在计算倍频程之前需要将时域信号进行傅里叶变化,本文基于功率谱密度进行倍频程计算. 计算自功率谱密度 计算一维数组x ...

  5. matlab 数据透视表,MATLAB | 用行为数据处理EEG数据事件码

    脑电图(Electroencephalogram,EEG)是通过精密的电子仪器,从头皮上将脑部的自发性生物电位加以放大记录而获得的图形,同时具有极高的时间分辨率.EEGLAB和ERPLAB常被用来处理 ...

  6. 时域特征值提取的MATLAB代码实现(均方根、峰值因子、脉冲因子、裕度因子、峭度因子、波形因子和偏度等)

    时域计算代码相对简单,下列代码主要来自求助matlab时域分析程序-峰值.均方根.裕度.峭度_百度知道.不过原文中求"峭度因子"的方法不对,即"Kr = sum(y.^4 ...

  7. matlab 十倍频程,Matlab关于三分之一倍频程程序的问题

    以下是我学习编写的一个MATLAB关于三分之一倍频程处理的程序,但是我得到的结果跟我同事用flexpro得到的结果总是差上几倍,现在把他贴出来,请各位高手指教!! %三分之一倍频程处理 %%%%%%% ...

  8. 如何将txt格式的数据导入到MATLAB中,并绘制图线

    如何将txt格式的数据导入到MATLAB中,并绘制图线 1.把txt格式的文件复制到MATLAB的目录下,在txt文件上点击右键→Import Data→next→Finish, 在workspace ...

  9. 2016年大数据Spark“蘑菇云”行动代码学习之AdClickedStreamingStats模块分析

    2016年大数据Spark"蘑菇云"行动代码学习之AdClickedStreamingStats模块分析     系统背景:用户使用终端设备(IPAD.手机.浏览器)等登录系统,系 ...

最新文章

  1. 端口聚合有哪几种方式?
  2. Bootstrap的引用文件
  3. OpenCV测量视频编码和解码的性能(附完整代码)
  4. 【Android】SlidingMenu属性详解(转)
  5. CVPR 2020丨基于并行点检测和点匹配的单阶段实时HOI Detection方法
  6. mysql 注入 update_利用insert,update和delete注入获取数据_MySQL
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的超市订单管理系统
  8. developerDiskImage文件提取
  9. Repast Statecharts
  10. 使用python制作趣味小游戏—投骰子
  11. c++ 调用meshlab程序慢_MeshLab中插件的添加过程
  12. 信息学奥赛一本通(C++版)在线评测系统 1161:转进制
  13. 桌面CPU性能排行榜
  14. 谱聚类算法入门教程(三)—— 求f^TLf的最小值
  15. 怎么查看数据库的ip地址?
  16. Pandas数据分析及可视化应用实践
  17. mysql binlog event_MySQL binlog中的事件类型详解
  18. 人工智能AI、机器学习模型理解
  19. chromium-browser添加flash插件
  20. 前端中常用的一个标准的表格模板

热门文章

  1. 敏捷实践:比每日会议更疯狂的半日会议!
  2. 《力学》课时二质点运动学(二)
  3. nacos 怎么配置 里的配置ip_nacos集群配置
  4. iis设置导致python调用urllib.request.urlopen出错问题
  5. php 501解决办法,PHP 使用错误处理解析
  6. java 设计方法_java 中如何处理设计一个方法
  7. java生成flash_针对 Flash 开发者的最新 Capuchin 计划资源
  8. VS编译器安装Eigen
  9. python(c++)刷题+剑指offer
  10. 利用github page搭建博客