matlab1 3倍频程,瞬时声压时域数据怎么用matlab进行1/3倍频程声压级分析
%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倍频程声压级分析相关推荐
- 倍频程分析函数matlab,瞬时声压时域数据怎么用matlab进行1/3倍频程声压级分析
%A计权声压级频谱分析 clc; clear; close all; %时域分析 y=wavread('abc.wav'); %频域分析 fs=51200;%采样频率 p0=2e-5;%参考声压 f= ...
- matlab实现三分之一倍频程,三分之一倍频程程序
方法一:%A计权声压级频谱分析 clc; clear; close all; y=wavread('abc.wav'); fs=51200;%采样频率 p0=2e-5;%参考声压 f=[1.00 1. ...
- matlab 倍频,1/3倍频程及Matlab程序实现
倍频程是声学里人的可听频率范围内,将声音的频谱进行一定规则的集中,变成有限的几个频点对应的强度,这样描述比较起来容易,是一种公约的描述形式. 使用1/3倍频程主要是因为人耳对声音的感觉,其频率分辨能力 ...
- 基于Matlab的1/3倍频程计算
倍频程定义 倍频程表示的是相应倍频程带内的功率(能量)之和,其详细理论课参考其他文章,在计算倍频程之前需要将时域信号进行傅里叶变化,本文基于功率谱密度进行倍频程计算. 计算自功率谱密度 计算一维数组x ...
- matlab 数据透视表,MATLAB | 用行为数据处理EEG数据事件码
脑电图(Electroencephalogram,EEG)是通过精密的电子仪器,从头皮上将脑部的自发性生物电位加以放大记录而获得的图形,同时具有极高的时间分辨率.EEGLAB和ERPLAB常被用来处理 ...
- 时域特征值提取的MATLAB代码实现(均方根、峰值因子、脉冲因子、裕度因子、峭度因子、波形因子和偏度等)
时域计算代码相对简单,下列代码主要来自求助matlab时域分析程序-峰值.均方根.裕度.峭度_百度知道.不过原文中求"峭度因子"的方法不对,即"Kr = sum(y.^4 ...
- matlab 十倍频程,Matlab关于三分之一倍频程程序的问题
以下是我学习编写的一个MATLAB关于三分之一倍频程处理的程序,但是我得到的结果跟我同事用flexpro得到的结果总是差上几倍,现在把他贴出来,请各位高手指教!! %三分之一倍频程处理 %%%%%%% ...
- 如何将txt格式的数据导入到MATLAB中,并绘制图线
如何将txt格式的数据导入到MATLAB中,并绘制图线 1.把txt格式的文件复制到MATLAB的目录下,在txt文件上点击右键→Import Data→next→Finish, 在workspace ...
- 2016年大数据Spark“蘑菇云”行动代码学习之AdClickedStreamingStats模块分析
2016年大数据Spark"蘑菇云"行动代码学习之AdClickedStreamingStats模块分析 系统背景:用户使用终端设备(IPAD.手机.浏览器)等登录系统,系 ...
最新文章
- 端口聚合有哪几种方式?
- Bootstrap的引用文件
- OpenCV测量视频编码和解码的性能(附完整代码)
- 【Android】SlidingMenu属性详解(转)
- CVPR 2020丨基于并行点检测和点匹配的单阶段实时HOI Detection方法
- mysql 注入 update_利用insert,update和delete注入获取数据_MySQL
- 基于JAVA+SpringMVC+Mybatis+MYSQL的超市订单管理系统
- developerDiskImage文件提取
- Repast Statecharts
- 使用python制作趣味小游戏—投骰子
- c++ 调用meshlab程序慢_MeshLab中插件的添加过程
- 信息学奥赛一本通(C++版)在线评测系统 1161:转进制
- 桌面CPU性能排行榜
- 谱聚类算法入门教程(三)—— 求f^TLf的最小值
- 怎么查看数据库的ip地址?
- Pandas数据分析及可视化应用实践
- mysql binlog event_MySQL binlog中的事件类型详解
- 人工智能AI、机器学习模型理解
- chromium-browser添加flash插件
- 前端中常用的一个标准的表格模板
热门文章
- 敏捷实践:比每日会议更疯狂的半日会议!
- 《力学》课时二质点运动学(二)
- nacos 怎么配置 里的配置ip_nacos集群配置
- iis设置导致python调用urllib.request.urlopen出错问题
- php 501解决办法,PHP 使用错误处理解析
- java 设计方法_java 中如何处理设计一个方法
- java生成flash_针对 Flash 开发者的最新 Capuchin 计划资源
- VS编译器安装Eigen
- python(c++)刷题+剑指offer
- 利用github page搭建博客