%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);

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

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

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

  2. 用matlab处理表格,matlab删除excel表格数据-如何用matlab处理多个excel表格中的数据...

    如何用matlab处理多个excel表格中的数据 biao='D:\Program Files\matlab\bin\filename.xls'; A1=xlsread (biao,'Sheet1', ...

  3. matlab批量导入excel表格数据,matlab导入excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......

    如何用matlab读取多个excel表格数据,将每个表格数... 一xlsread()函数,比import简单的多,具体语句:A = xlsread('yourfilename.xls')望高手支招! ...

  4. matlab怎么语音时域采样频谱,基于MATLAB的时域信号采样及频谱分析

    基于 M ATL AB的时域信号采样及频谱分析 刘 艳 (长江师范学院物理学与电子工程学院 重庆 408000) 信 息 技 术 摘 要:在MATLAB仿真环境下,通过观察所生成的采样信号的时域图和频 ...

  5. matlab批量合并表格数据,用matlab合并excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......

    用matlab如何识别excel里的单元格是否为合并单元格 方法如下: 使用函数xlsread读取单个文件. num=xlsread(filename) filename是单引号括起来的带路径的文件名 ...

  6. Matlab/Simulink中的数据输出到Matlab工作空间中

    1.按照图中操作 2.数据输出到了Matlab的工作空间 3.使用这些数据绘图 plot(out.tout,out.y2.signals(1).values) 注意:这里的时间变量名和输出变量名需要根 ...

  7. matlab如何显示矩阵数据,菜鸟求助-matlab矩阵数据显示问题

    楼上的各位,谢谢了 不过按照#4的,我也可以得到 >> > max(x2) ans = 10000 ,可显示的确实是 Columns 999715 through 999720 0. ...

  8. MATLAB高斯噪声时域频域代码,基于Matlab生成高斯噪声

    lyqmath 简介高斯噪声是常见的噪声之一,这里介绍两种高斯噪声生成方式,并希望大家多多讨论. 应用 % By lyqmath % DLUT School of Mathematical Scien ...

  9. matlab遗传算法拟合,基于遗传算法的数据拟合在MATLAB环境中的实现

    湖 南 农 机 2010 年 5 月 收稿日期:2010-04-02 作者简介:林鸿彬(1987-),男,海南海口人,主要从事信息与计算科学专业的学习. 摘 要:在自然科学中,常常在相关的 2 个量之 ...

最新文章

  1. 使用redis和mysql的开源项目_干货!带你了解为什么那么多开源项目都是用Redis!...
  2. 实施PLM系统的总结及建议
  3. 启动 nginx 时报错:error while loading shared libraries:
  4. linux gcc编译c文件头文件,使用GCC编译器编译C语言
  5. bitMap保存图片
  6. 【动态规划】石子合并 (ssl 2863)
  7. 【疑问感受】初见指针——当函数遇到指针
  8. java 鼠标拖拽_JavaScript DOM 鼠标拖拽
  9. Duplicate class com.blankj.utilcode.BuildConfig found in modules classes.jar
  10. Charles(网络封包分析工具)
  11. 宏基ACER Aspire R3600 REVO离子平台
  12. 简单实现网络验证_电脑计算机编程入门教程自学
  13. 魅族手机在开发调试中无法打印log的解决方法
  14. 数分下第12讲(第9.6节) 梯度散度和旋度
  15. 区块链:POA委员会选举机制
  16. 使用Eclipse搭建STM32嵌入式开发环境
  17. 核心价值观与企业文化管理实践---基于华为的企业文化的管理实践-林 安老师
  18. IP-Guard桌面申请管理说明步骤
  19. Tomcat 的下载与安装教程
  20. Linux环境下——实现xml文件解析

热门文章

  1. 【论文复现】使用fastText进行文本分类
  2. python paramiko_Python3之paramiko模块
  3. Leetcode每日一题:112.path-sum(路经总和)
  4. 吴恩达|机器学习作业2.0Logistic 回归
  5. TypeError: create_target_machine() got an unexpected keyword argument ‘jitdebug‘解决方案
  6. 利用screen和nohup让Linux服务器后台运行程序
  7. 基于Docker搭建Jumpserver堡垒机操作实践
  8. linux卸载htop,linux下 htop 工具简介
  9. matlab调和均值滤波_matlab均值滤波(原创).doc
  10. python编程技术总结_Python面向对象编程(OOP)技术总结