数字信号处理报告课案Word文档下载推荐.docx
《数字信号处理报告课案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字信号处理报告课案Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
MATLAB软件包括五大通用功能,数值计算功能(Nemeric)、符号运算功能(Symbolic)、数据可视化功能(Graphic)、数字图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。
其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MATLAB命令窗口。
该软件有三大特点,一是功能强大;
二是界面友善、语言自然;
三是开放性强。
目前,Mathworks公司已推出30多个应用工具箱。
MATLAB在线性代数、矩阵分析、数值及优化、数值统计和随机信号分析、电路与系统、系统动力学、次那好和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。
MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。
由于信号与系统课程的许多内容都是基于公式演算,而MATLAB借助符号数学工具箱提供的符号运算功能,能基本满足信号与系统课程的需求。
例如解微分方程、傅里叶正反变换、拉普拉斯正反变换和z正反变换等。
MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲击响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析和零极点图绘制等内容。
数值计算仿真分析可以帮助学生更深入地理解理论知识,并为将来使用MATLAB进行信号处理领域的各种分析和实际应用打下基础。
2.本题目的意义
本次课程设计的课题为《基于MATLAB的语音信号采集与处理》,学会运用MATLAB的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础
2实验原理
1.理论原理
利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;
并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。
2具体流程
NO
(1)语音信号的采集及分析
从录制一段语音信号,经过格式工厂将格式转为wav格式,并命名为“ww.wav”。
在Matlab平台下调用wavread函数可采集到语音信号。
即[x1]=wavread('
D:
/w.wav'
);
sound(x1,45050);
%读出原始语音信号
原始的语音信号波形与频谱
(2)给原始信号加上一个高频噪声
在Matlab中设计一个高频噪声干扰信号。
噪声信号通常为随机序列,在本设计中为高斯随机噪声,干扰信号构建命令函数为x2=0.01*randn(N,2),给出的干扰信号为一个高斯随机信号,针对上面的语音信号,采集了其中一段。
再对噪音信号进行频谱变换得到其频谱图。
在MATLAB中把语音信号与噪声信号进行叠加,并对其进行播放,然后对加入噪声后的语音信号进行频谱分析,在MATLAB中可以利用函数FFT对信号进行快速傅里叶变换。
将原语音信号与噪声信号x2叠加,调用的形式为:
x3=x2+x1;
其中,x1为原语音信号,x2为所构造的随机高斯噪声,x3即为两者的叠加后的语音信号。
加入的高斯随机噪声
3)滤波器的设计,滤除高频噪声
在MATLAB中,利用窗函数hamming,设计FIR滤波器,利用MATLAB中的函数freqz画出滤波器的频率响应。
并用设计好的滤波器对含噪语音信号进行滤波,在Matlab中,FIR滤波器利用函数filter对信号进行滤波
滤波器设计程序代码:
Wp=3000*2*pi;
Ws=3500*2*pi;
Ap=0.3;
As=50;
Fs=45050;
wp=Wp/Fs;
ws=Ws/Fs;
%归一化通带截频阻带截频
wdelta=ws-wp;
%过渡带宽
%由阻带最小衰减指标确定选用汉明窗并确定其阶数
N=ceil(6.6*pi/wdelta);
Nw=N;
n=0:
N-1;
wc=(wp+ws)/2;
%理想截频
alpha=(N-1)/2;
m=n-alpha+eps;
%理想滤波器脉冲响应
hd=sin(wc*m)./(pi*m);
%采用汉明窗设计
win=hamming(Nw);
h=hd.*win'
;
b=h;
[H,f]=freqz(b,1,512,Fs);
%绘制滤波器的幅频响应图
figure(4);
plot(f,20*log10(abs(H)))
xlabel('
Hz'
ylabel('
幅值'
title('
滤波器幅频特性'
信号滤波程序代码:
x4=fftfilt(b,x3);
%滤波输出
sound(x4,45050);
%输入输出频谱
figure
(1);
subplot(2,2,3);
plot(x4)%绘制输出信号
time(s)'
),ylabel('
title('
滤波后输出信号'
Y=fft(x4);
figure(3);
plot(abs(Y));
滤波后输出信号频谱'
)
滤波后的波形和频谱
3实验结果
滤波前后的波形比较
4本程序运行后,一共播放四段语音信号。
首先播放原语音信号,接着是噪声信号,然后是加噪后的语音信号,最后是滤波后的信号,每段语音信号大约11s。
同时对语音信号的特性进行图像显示,在figure1中显示了原始语音信号、加噪后的语音信号、滤波后输出信号各自的幅值随时间的变化
5心得体会
通过这一个礼拜使用Matlab对语音信号进行处理,进一步熟悉了Matlab的使用,并对语音信号的格式有了更全面的认识。
自己在电脑上录音并进行了语音的格式转换,变换为wav的语音格式。
在程序设计中学会了一些Matlab中基本的语音运行及处理程序,比如:
语音读取函数wavread()、语音播放函数sound()、快速傅里叶变换fft()、滤波处理fftfilt()。
并加深了对课堂抽象概念的理解,巩固了课堂上所学的理论知识,并能很好的理解和掌握语音信号处理中运用的方法,同时掌握编程方法和解决实际问题的技巧
参考文献
[1]张志涌.精通MATLAB6.5版[M].北京:
北京航空航天大学出版社,2003.
[2]约翰·
G·
普罗克斯.数字信号处理[M].西安:
西安交通大学出版社,2009.
[3]张小虹.信号系统与数字信号处理[M].第1版.西安:
西安电子科技出版社,2002.
[4]谢德芳.数字信号处理[M].北京:
科学出版社,2005.
[5]郝建军.数字通信[M].第2版.北京:
北京邮电大学出版社,2010.
[6]张威.MATLAB基础与编程入门[M].西安:
西安电子科技大学出版社,2010.
附录:
[x1]=wavread('
E:
sound(x1,45050);
y1=fft(x1,1024);
%对原始信号进行1024点傅里叶变换
频率
f=Fs*(0:
511)/1024;
分别表示nfft个频率点
figure
(1)打开图形窗口
subplot(2,2,1);
确定第一个绘图窗口
plot(x1)%显示原始信号以x1绘图
原始语音信号'
取名
xlabel('
x轴名
figure(3)
plot(f,abs(y1(1:
512)));
做原始语音信号的FFT频谱图
原始语音信号频谱'
N=length(x1);
%计算原始语音信号的长度
x2=0.05*randn(N,2);
x2为随机噪声
sound(x2,45050);
播放噪声
figure
(2)
plot(x2)
高斯随机噪声'
sound(x3,45050);
y2=fft(x3,1024);
figure
(1)
subplot(2,2,2);
plot(x3)%显示加噪后的语音信号
加噪后的语音信号'
figure(3);
plot(f,abs(y2(1:
加噪后的语音信号频谱'
Nbits=16;
wavwrite(x3,Fs,Nbits,'
noise.wav'
%将加噪的信号保存
Wp=3000*2*pi;
wp=Wp/Fs;
wdelta=ws-wp;
%由阻带最小衰减指标确定选用汉明窗并确定其阶数
N=ceil(6.6*pi/wdelta);
Nw=N;
n=0:
wc=(wp+ws)/2;
alpha=(N-1)/2;
m=n-alpha+eps;
hd=sin(wc*m)./(pi*m);
win=hamming(Nw);
h=hd.*win'
b=h;
[H,f]=freqz(b,1,512,Fs);
figure(4);
plot(f,20*log10(abs(H)))
x4=fftfilt(b,x3);
sound(x4,45050);
figure
(1);
subplot(2,2,3);
plot(x4)%绘制输出信号
Y=fft(x4);
plot(abs(Y));