matlab声音处理
由于最近的Project要做声音分析,需要用到MATLAB,之前一直没怎么接触过,所以乘着做Project学习下。真的用了才知道MATLAB真是神器啊,呵呵~~~其强大的函数库和数学运算能力彻底让我折服了。言归正传,我们来讨论下用MATLAB做声音文件处理。
1. 读取WAV声音文件
- % wavread(filename) 读取一个WAVE文件,并返回采样数据到向量y中,Fs表示采样频率, bits表示采样位数
- [y, Fs, bits] = wavread('drum.wav');
- %假设声音文件有两个声道,我们只分析第一个声道,如果要分析第二个声道可以改为:ft=y(:,2);
- ft = y(:,1);
- sigLength = length(ft); %获取声音长度
- %可以使用sound函数来播放声音
- sound(y, Fs, bits)
% wavread(filename) 读取一个WAVE文件,并返回采样数据到向量y中,Fs表示采样频率, bits表示采样位数
[y, Fs, bits] = wavread('drum.wav');%假设声音文件有两个声道,我们只分析第一个声道,如果要分析第二个声道可以改为:ft=y(:,2);
ft = y(:,1);
sigLength = length(ft); %获取声音长度%可以使用sound函数来播放声音
sound(y, Fs, bits)
- t=(0:sigLength-1)/Fs;
- figure;
- subplot(2,1,1);
- plot(t, ft), title('Plot of the Tone'),grid;
- xlabel('Time(s)');
- ylabel('Amplitude');
t=(0:sigLength-1)/Fs;
figure;
subplot(2,1,1);
plot(t, ft), title('Plot of the Tone'),grid;
xlabel('Time(s)');
ylabel('Amplitude');
- %Y = fft(X) 使用快速傅里叶变换算法返回向量X的离散型傅里叶变换
- %Y = fft(X,n) 返回n点的离散傅里叶变换,如果向量X的长度小于n,函数要将向量X补零到长度n;如果向量X的长度大于n, 则函数阶段X使之长度为n。若X是矩阵,按相同方法对X进行处理。
- Y = fft(ft,sigLength);
- halfLength = floor(sigLength/2);
- Pyy =Y(1:halfLength + 1); % 只选取前半截部分
%Y = fft(X) 使用快速傅里叶变换算法返回向量X的离散型傅里叶变换
%Y = fft(X,n) 返回n点的离散傅里叶变换,如果向量X的长度小于n,函数要将向量X补零到长度n;如果向量X的长度大于n, 则函数阶段X使之长度为n。若X是矩阵,按相同方法对X进行处理。Y = fft(ft,sigLength);
halfLength = floor(sigLength/2);
Pyy =Y(1:halfLength + 1); % 只选取前半截部分
- Pyy = abs(Pyy);%用于计算复向量的Y的振幅
- f = ((0:halfLength)+1)* Fs/sigLength;
- subplot(2,1,2);
- plot(f,Pyy), title('Frequency spectrum'),grid;
- xlabel('Frequency(Hz)');
- ylabel('Amplitude');
Pyy = abs(Pyy);%用于计算复向量的Y的振幅
f = ((0:halfLength)+1)* Fs/sigLength;
subplot(2,1,2);
plot(f,Pyy), title('Frequency spectrum'),grid;
xlabel('Frequency(Hz)');
ylabel('Amplitude');
- Y = fft(ft,sigLength);
- halfLength = floor(sigLength/2);
- Pyy =Y(1:halfLength + 1); % 只选取前半截部分
- Pyy = abs(Pyy);%用于计算复向量的Y的振幅
- f = ((0:halfLength)+1)* Fs/sigLength;
- %通过点数调整比例,从而使振幅不依赖于信号长度或采样频率,说实话这部分还不是很明白
- Pyy = Pyy/sigLength;
- Pyy = Pyy.^2; %求平方得到能量
- % 乘以2, 请参照 http://www.mathworks.com/support/tech-notes/1700/1702.html
- if rem(sigLength, 2) %奇数的 n fft 不包含奈奎斯特(Nyquist)点
- Pyy(2:end) = Pyy(2:end)*2;
- else
- Pyy(2:end -1) = Pyy(2:end-1)*2;
- end
- plot(f/1000, 10*log10(Pyy), 'k')
- xlabel('Frequency (kHz)')
- ylabel('Power (dB)')
Y = fft(ft,sigLength);
halfLength = floor(sigLength/2);
Pyy =Y(1:halfLength + 1); % 只选取前半截部分
Pyy = abs(Pyy);%用于计算复向量的Y的振幅
f = ((0:halfLength)+1)* Fs/sigLength;
%通过点数调整比例,从而使振幅不依赖于信号长度或采样频率,说实话这部分还不是很明白
Pyy = Pyy/sigLength;
Pyy = Pyy.^2; %求平方得到能量
% 乘以2, 请参照 http://www.mathworks.com/support/tech-notes/1700/1702.html
if rem(sigLength, 2) %奇数的 n fft 不包含奈奎斯特(Nyquist)点Pyy(2:end) = Pyy(2:end)*2;
elsePyy(2:end -1) = Pyy(2:end-1)*2;
endplot(f/1000, 10*log10(Pyy), 'k')
xlabel('Frequency (kHz)')
ylabel('Power (dB)')
matlab声音处理相关推荐
- Matlab声音处理教程
Matlab声音处理教程 1)用mp3录音,生成文件cricket.wav,把该文件放到matlab文件夹里面(就是你打开matlab后中间顶部的地址). 2)使用如下程序,做波形显示以及fft变换. ...
- matlab语音处理教程,Matlab声音处理教程 / 声音处理 / 声音处理教程 / 声音处理软件...
Matlab声音处理教程 / 声音处理 / 声音处理教程 1)用mp3录音,生成文件cricket.wav,把该文件放到matlab文件夹里面(就是你打开matlab后中间顶部的地址). 2)使用如下 ...
- matlab声音的滤波处理,matlab声音信号的采集与滤波处理.doc
matlab声音信号的采集与滤波处理.doc MATLAB实验报告(题目二)(题目二)声音信号的采集与滤波处理采用IIR滤波器或FIR滤波器参考资料信号的采集.数字信号处理及滤波实例要求(1)采集声音 ...
- 信号内插matlab,声音信号的抽取和内插,MATLAB代码
声音信号抽取和内插的MATLAB程序 %%%l为抽取倍数,m为内插倍数,mp3为音频信号, %%%此程序实现音频信号的内插和抽取,并画出处理前后的信号时域.频域图像function myhomewor ...
- MATLAB 声音文件处理
由于最近的Project要做声音分析,需要用到MATLAB,之前一直没怎么接触过,所以乘着做Project学习下.真的用了才知道MATLAB真是神器啊,呵呵~~~其强大的函数库和数学运算能力彻底让我折 ...
- MATLAB 声音文件分析、处理。
转自:http://blog.csdn.net/wubo9935/article/details/6655408 由于最近的Project要做声音分析,需要用到MATLAB,之前一直没怎么接触过,所以 ...
- matlab声音的滤波处理,MATLAB声音信号的采集与滤波处理
Matlab 实验报告(题目二) (题目二)声音信号的采集与滤波处理(采用IIR滤波器或FIR滤波器) 参考资料:信号的采集.数字信号处理及滤波实例 要求:(1)采集声音信号或打开已录好的声音文件,并 ...
- matlab声音信号分析与合成
任何一种声音信号都可以表示为 X(n)=Aiinsin(ωit+θi) 其中 ωi=2πfi Ai为归一化幅值, fi为频率,θi为初始相位角.t 为采样向量矩阵,例如采样率为Fs 每帧音频时间为T, ...
- matlab声音信号调制-3种方法(附matlab代码)
%% 单一频率信号调制 clc clear fs = 48000; fc=18000; t=0:1/fs:10;signal = cos(2*pi*fc*t); [ mr ] = plot_fft( ...
最新文章
- Milvus Windows
- 【转】Android Studio系列教程一--下载与安装
- Synchronize锁粒度
- 【Windows10】我的电脑从新装到优化配置
- Lua脚本语言应用场景
- SQL基础E-R图画法(三)
- shell_之_find(查找)
- 学习了下简单的光照模型
- Android 异步任务
- [问题]apparmor 问题导致mysql切换datadir目录失败
- .NET CF获取当前dll及其调用程序的文件名和完全路径
- Win7重装后修复Ubuntu引导项
- 视频:老外演示如何做康奈尔笔记
- 计算机校本培训措施,2017度信息技术校本培训计划
- js基础系列之函数调用与this
- CF大陆斗C战士(一)
- 【操作系统】CSAPP学习笔记
- [附源码]Java计算机毕业设计SSM大学生健康管理系统的设计与实现
- 每日自动签到签退的程序
- Legolas工业自动化平台案例 —— 水源地自动化监控系统