matlab中求声音的长度,关于声音分贝大小
function A_weight_dB()
clear all;clc;
Audio_File='.\';
% 获取文件夹下的所有文件信息,并存入music结构体
music=dir([Audio_File '*.wav']);
Calculate(Audio_File,music);
end
function Calculate(Audio_File,music)
for i=1:length(music)
[y,fs]=audioread(strcat(Audio_File,music(i).name));
Frame_Len=3000; % 帧长
End_Frame=length(y)-Frame_Len; % 结束帧位置
Step_Len=Frame_Len; % 步长
dBA=[];cnt=1;
for k=0:End_Frame/Step_Len
Frame=y(k*Step_Len+1:k*Step_Len+Frame_Len);
[~,dBA(cnt,1)] = estimateLevel2(Frame,fs,55);
cnt=cnt+1;
end
Mean_dBA=mean(dBA)
Max_dBA=max(dBA)
end
end
function [X,dBA] = estimateLevel2(x,Fs,C)
% 计算分贝
X = abs(fft(x));
XX=X;
f = (Fs/length(X))*[0:(length(X)-1)];
ind = find(f
f = f(ind);
X= X(ind);
indx=find(X>0);
X(X == 0) = 1e-17;
A = filterA(f);
min_X=min(X);
X=X*(1/min_X);
X = A'.*X;
X=X/(1/min_X);
if ~isempty(indx)
X=X(indx);
totalEnergy = sum(X.^2)/length(X);
meanEnergy = totalEnergy/((1/Fs)*length(X));
dBA = 10*log10(meanEnergy+1)+C;
if dBA<30
dBA=30;
end
X = 20*log10(X);
else
dBA=30;
X=XX;
end
end
function A = filterA(f,plotFilter)
c1 = 3.5041384e16;
c2 = 20.598997^2;
c3 = 107.65265^2;
c4 = 737.86223^2;
c5 = 12194.217^2;
% Evaluate A-weighting filter.
f(find(f == 0)) = 1e-17;
f = f.^2; num = c1*f.^4;
den = ((c2+f).^2) .* (c3+f) .* (c4+f) .* ((c5+f).^2);
A = num./den;
% Plot A-weighting filter (if enabled).
if exist('plotFilter') & plotFilter
% Plot using dB scale.
figure(2); clf;
semilogx(sqrt(f),10*log10(A));
title('A-weighting Filter');
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
xlim([10 100e3]); grid on;
ylim([-70 10]);
% Plot using linear scale.
figure(3); plot(sqrt(f),A);
title('A-weighting Filter');
xlabel('Frequency (Hz)');
ylabel('Amplitude');
xlim([0 44.1e3/2]); grid on;
end
end
matlab中求声音的长度,关于声音分贝大小相关推荐
- MATLAB中求矩阵非零元的坐标
MATLAB中求矩阵非零元的坐标: 方法1: index=find(a); [i,j]=ind2sub(size(a),index); disp([i,j]) 方法2: [i,j]=find(a> ...
- matlab中求矩阵的迹,求Matlab中矩阵的秩和迹
1.Matlab中求矩阵的秩 >> a = rand(6) a = 0.8147 0.2785 0.9572 0.7922 0.6787 0.7060 0.9058 0.5469 0.48 ...
- matlab方程近似求根,第七讲MATLAB中求方程的近似根(解)教学目的学习matlab中求根命令.doc...
第七讲MATLAB中求方程的近似根(解)教学目的学习matlab中求根命令 第七讲 MATLAB中求方程的近似根(解) 教学目的:学习matlab中求根命令,了解代数方程求根求解的四种方法,即图解法. ...
- Matlab中求取置信区域
Matlab中求取置信区间_warnerchang的博客-CSDN博客_matlab求置信区间一.概率密度函数.累计分布函数.逆累积分布函数在数学中,连续型随机变量的概率密度函数(在不至于混淆时可以简 ...
- matlab 中序列求极值的方法,Matlab中求序列的极值
我们知道,在Matlab中有专门求序列最大值和最小值的函数,分别是Max 和 Min,但是有时候我们不满足于求整个序列的最值,而是对序列的极值,也就是局部的最值感兴趣.对于解析函 数,这个比较简单,只 ...
- matlab中求立方根,MATLAB基础入门
MATLAB有许多使用方法,但最基本,也是入门时首先要掌握的是MATLAB命令窗口(Command Window)的使用方法. MATLAB命令窗口是用于输入数据,运行MATLAB函数和脚本,并显示结 ...
- Matlab中求导操作
文章目录 前言 一.求导命令 二.使用方法 总结 前言 正文 一.求导命令 diff % 差分和近似导数%此 MATLAB 函数 计算沿大小不等于 1 的第一个数组维度的 X 相邻元素之间的差分: 二 ...
- matlab中std函数怎么写,Matlab中求均值和标准差的函数分别是mean(x)和std(x)。
栋教现拟学楼建-,中求准差的教学楼某已框架建工结构程为,中求准差0元直接建筑工程费为,相同结构其他,办公为()万元筑工造价建新接费该拟程直楼建,挖孔元/桩基采用础1人工. 下列中说法,均值何时款业主预 ...
- matlab中求包络线函数,matlab包络线函数
的包络 解调方法 一直 是机 械故 障诊 线 ,只 需要经 过大 脑 的取舍 ,...(c )可 以看 出,经过 MATLAB 中的 Hilbert 函数 后也 出现 了皱 纹 ,...... yma ...
- Matlab中求数据概率分布的方法
一.问题描述 对已有的一些列数据进行分析,想得到该数据的分布和统计特性,如概率密度函数,概率分布,累计概率密度等等. 例如,已有一段时间的声音测量数据,求该数据的分布特性,并给出噪声的95%置信区间统 ...
最新文章
- 恍然大悟之原、反、补
- MySQL查询的进阶操作--联合查询
- DVWA--SQL Injection (盲注)--四个级别
- 全国计算机等级考试题库二级C操作题100套(第88套)
- [PALAPALA] 无题 - 外来的和尚会念经
- linux常用命令(16)locate命令
- pycharm 运行后,如何查看变量值以及继续输入语句并运行?(非Debug , debug太慢)
- cvpr2019 文章
- 银行代码就是银行行号吗?
- 制作影像(dmg)文件详细步骤
- CISSP-D7-运营安全
- Java使用iText PDF按页(逐页、单页)拆分PDF
- \xmemory(102): error C4996: 'std::uninitialized_copy::_Unchecked_iterators::_Deprecate':
- 示波器1m和50欧姆示阻抗匹配_示波器的阻抗选择
- 英文文献检索网站(转)
- 微型计算机输出设备 写出六种,2017计算机一级考试强化训练
- css选择器(选择div内所有p元素)
- 06年底写的5年职业规划与珠海金山邮件面试题回复
- 图像超分算法小合集二:FSRCNN、DRCN、RDN、EDSR
- 【翻译】EAST: An Efficient and Accurate Scene Text Detector
热门文章
- 覆盖计算机网络分类有哪些 英语缩写,简述按覆盖范围划分计算机网络的分类类型有哪些?英语缩写分别是什么?...
- 《未来世界的幸存者》摘录
- 【笔记总结】C陷阱与缺陷
- 【线性代数】矩阵的特征值分解(对角化、谱分解)
- android的wifi开发,android开发教程之wifi开发示例
- 【Oracle】Oracle insert 语句用法
- 如何申请微信H5支付?
- 激光雷达互动交互大屏全息互动投影Tuio多点触摸检测驱动引擎
- 计算机电子报模板,计算机辅助电气电子线路设计课程设计设计报告排版模板(WIT).doc...
- vue axios封装及使用