转自:http://blog.csdn.net/wubo9935/article/details/6655408

由于最近的Project要做声音分析,需要用到MATLAB,之前一直没怎么接触过,所以乘着做Project学习下。真的用了才知道MATLAB真是神器啊,呵呵~~~其强大的函数库和数学运算能力彻底让我折服了。言归正传,我们来讨论下用MATLAB做声音文件处理。

1. 读取WAV声音文件

[plain] view plaincopy
  1. % wavread(filename) 读取一个WAVE文件,并返回采样数据到向量y中,Fs表示采样频率, bits表示采样位数
  2. [y, Fs, bits] = wavread('drum.wav');
  3. %假设声音文件有两个声道,我们只分析第一个声道,如果要分析第二个声道可以改为:ft=y(:,2);
  4. ft = y(:,1);
  5. sigLength = length(ft); %获取声音长度
  6. %可以使用sound函数来播放声音
  7. sound(y, Fs, bits)
2. 绘制波形图
[plain] view plaincopy
  1. t=(0:sigLength-1)/Fs;
  2. figure;
  3. subplot(2,1,1);
  4. plot(t, ft), title('Plot of the Tone'),grid;
  5. xlabel('Time(s)');
  6. ylabel('Amplitude');
3. 绘制振幅频谱图
[plain] view plaincopy
  1. %Y = fft(X) 使用快速傅里叶变换算法返回向量X的离散型傅里叶变换
  2. %Y = fft(X,n) 返回n点的离散傅里叶变换,如果向量X的长度小于n,函数要将向量X补零到长度n;如果向量X的长度大于n, 则函数阶段X使之长度为n。若X是矩阵,按相同方法对X进行处理。
  3. Y = fft(ft,sigLength);
  4. halfLength = floor(sigLength/2);
  5. Pyy =Y(1:halfLength + 1); % 只选取前半截部分
波形的傅里叶变换返回震级和相位信息,并且用复数的形式表达,通过计算绝对值来获取其频率的振幅
[plain] view plaincopy
  1. Pyy = abs(Pyy);%用于计算复向量的Y的振幅
  2. f = ((0:halfLength)+1)* Fs/sigLength;
  3. subplot(2,1,2);
  4. plot(f,Pyy), title('Frequency spectrum'),grid;
  5. xlabel('Frequency(Hz)');
  6. ylabel('Amplitude');
4. 绘制能量频谱图
[plain] view plaincopy
  1. Y = fft(ft,sigLength);
  2. halfLength = floor(sigLength/2);
  3. Pyy =Y(1:halfLength + 1); % 只选取前半截部分
  4. Pyy = abs(Pyy);%用于计算复向量的Y的振幅
  5. f = ((0:halfLength)+1)* Fs/sigLength;
  6. %通过点数调整比例,从而使振幅不依赖于信号长度或采样频率,说实话这部分还不是很明白
  7. Pyy = Pyy/sigLength;
  8. Pyy = Pyy.^2; %求平方得到能量
  9. % 乘以2, 请参照 http://www.mathworks.com/support/tech-notes/1700/1702.html
  10. if rem(sigLength, 2)  %奇数的 n fft 不包含奈奎斯特(Nyquist)点
  11. Pyy(2:end) = Pyy(2:end)*2;
  12. else
  13. Pyy(2:end -1) = Pyy(2:end-1)*2;
  14. end
  15. plot(f/1000, 10*log10(Pyy), 'k')
  16. xlabel('Frequency (kHz)')
  17. ylabel('Power (dB)')

MATLAB 声音文件分析、处理。相关推荐

  1. MATLAB 声音文件处理

    由于最近的Project要做声音分析,需要用到MATLAB,之前一直没怎么接触过,所以乘着做Project学习下.真的用了才知道MATLAB真是神器啊,呵呵~~~其强大的函数库和数学运算能力彻底让我折 ...

  2. matlab声音信号分析与合成

    任何一种声音信号都可以表示为 X(n)=Aiinsin(ωit+θi) 其中 ωi=2πfi Ai为归一化幅值, fi为频率,θi为初始相位角.t 为采样向量矩阵,例如采样率为Fs 每帧音频时间为T, ...

  3. matlab读取声音文件

    2019独角兽企业重金招聘Python工程师标准>>> 1) matlab读取pcm音频数据 https://blog.csdn.net/believe646875970/artic ...

  4. matlab解析出声音文件的频率

    因为matlab工具集成了很多算法.记录学习了用matlab来解析声音频率. ff.wav 是一段频率为17640HZ的已知声音文件 贴上代码: 1 %1.%[X,Fs,Bit]=wavread('d ...

  5. MATLAB软件入门分析(附卡尔曼滤波的例程、mlx文件)

    MATLAB软件入门分析 Date:2023年3月13日 Author:Evand 入门综述 使用matlab编程时,通常使用.m文件,把所有代码编好后,统一运行or调试.如果想运行一两行代码,可以使 ...

  6. MATLAB实现键盘输入转换为声音文件,读取之后解调还原

    将从键盘输入的任何数据,通过dec2bin函数将其转换为二进制流之后通过2ASK调制,再通过sound函数将其通过pc自带的蜂鸣器发声,最后保存为声音文件. clear all clc %****** ...

  7. matlab声音处理

     由于最近的Project要做声音分析,需要用到MATLAB,之前一直没怎么接触过,所以乘着做Project学习下.真的用了才知道MATLAB真是神器啊,呵呵~~~其强大的函数库和数学运算能力彻底 ...

  8. Matlab声音处理教程

    Matlab声音处理教程 1)用mp3录音,生成文件cricket.wav,把该文件放到matlab文件夹里面(就是你打开matlab后中间顶部的地址). 2)使用如下程序,做波形显示以及fft变换. ...

  9. matlab语音处理教程,Matlab声音处理教程 / 声音处理 / 声音处理教程 / 声音处理软件...

    Matlab声音处理教程 / 声音处理 / 声音处理教程 1)用mp3录音,生成文件cricket.wav,把该文件放到matlab文件夹里面(就是你打开matlab后中间顶部的地址). 2)使用如下 ...

最新文章

  1. libseccomp2 (>= 2.3.0) but 2.2.3-3ubuntu3 is to be installed
  2. 在 Eclipse 中使用 Maven 构建 Web 项目
  3. Nginx uWsgi Django环境搭建
  4. 1191. K 次串联后最大子数组之和(最大子段和变形)
  5. 如何修改myeclipse中web项目的工作路径或默认路径
  6. MS CRM 2011 RC中的新特性(9)—全新的工作流 脚本设计模式
  7. 安装Windows 2003 域控制器
  8. Android 常用 adb 命令总结【转】
  9. ZooKeeper 相关概念以及使用小结
  10. POJ 2393 Yogurt factory
  11. 【数据结构】EOJ 1006. 线性链表的插入与删除
  12. 分时线的9代表什么_股权生命9条线,持有不同股权代表了什么?
  13. 决策树案例学习(Python实现)
  14. 系统运维工程师装逼完全指南
  15. 内存分析(二) AVFrame
  16. SecureCRT如何设置窗口下黑底白字
  17. opencv中mask参数
  18. 语音库构建_在10分钟内构建一个多功能语音助手
  19. CVPR 2022 结果出炉,最全论文下载及分类汇总(更新中)
  20. 输出下三角数字阵列C语言

热门文章

  1. HDU 1019 Least Common Multiple-数论(最小公倍数)
  2. Serialize的使用
  3. arduino知识点梳理(二)——INPUT_PULLUP模式
  4. Python修改路由器WIFI账号
  5. cacti监控客户端配置
  6. android sip协议栈,基于Android平台及SIP协议的软电话系统的研究
  7. sublime text 3 调色板插件
  8. 服务器dns显示fec,服务器dns地址fec0
  9. Java语言程序设计与数据结构(基础篇)梁勇第一章书中例题
  10. Python自动生成代码 - 通过tkinter图形化操作生成代码框架