数字信号处理.docx

上传人:b****2 文档编号:602961 上传时间:2023-04-29 格式:DOCX 页数:13 大小:283.87KB
下载 相关 举报
数字信号处理.docx_第1页
第1页 / 共13页
数字信号处理.docx_第2页
第2页 / 共13页
数字信号处理.docx_第3页
第3页 / 共13页
数字信号处理.docx_第4页
第4页 / 共13页
数字信号处理.docx_第5页
第5页 / 共13页
数字信号处理.docx_第6页
第6页 / 共13页
数字信号处理.docx_第7页
第7页 / 共13页
数字信号处理.docx_第8页
第8页 / 共13页
数字信号处理.docx_第9页
第9页 / 共13页
数字信号处理.docx_第10页
第10页 / 共13页
数字信号处理.docx_第11页
第11页 / 共13页
数字信号处理.docx_第12页
第12页 / 共13页
数字信号处理.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数字信号处理.docx

《数字信号处理.docx》由会员分享,可在线阅读,更多相关《数字信号处理.docx(13页珍藏版)》请在冰点文库上搜索。

数字信号处理.docx

数字信号处理

中国地质大学(武汉)

数字信号处理实习报告

 

学院:

机电学院

班级:

075112

姓名:

靳庆琛(10)

学号:

20111001524

时间:

2013.11.15

指导老师:

吴国平

 

1、实习目的:

1.掌握数字信号处理的基本概念、基本理论和基本方法;

2.学会MATLAB的使用,掌握MATLAB的程序设计方法;

3.掌握用MATLAB设计简单实验验证采样定理的方法;

4.了解matlab对声音信号的处理指令;

5.学会用MATLAB对信号进行频谱分析;

6.掌握MATLAB设计FIR和IIR数字滤波器的方法;

7.加深对信号分析应用的理解,提高信号分析领域的综合应用能力

二、实验要求:

1.利用简单正弦信号设计实验验证采样定理:

(1)Matlab产生离散信号的方法,作图的方法,以及基本运算操作

(2)对连续正弦信号以不同的采样频率作采样

(3)对采样前后信号进行傅立叶变换,并画频谱图

(4)分析采样前后频谱的有变化,验证采样定理。

掌握画频谱图的方法,深刻理解采样频率,信号频率,采样点数,频率分辨率等概念

2.真实语音信号的采样重构:

录制一段自己的语音信号,并对录制的信号进行采样;画出采样前后语音信号的时域波形和频谱图;对降采样后的信号进行插值重构,滤波,恢复原信号。

(1)语音信号的采集

(2)降采样的实现(改变了信号的采样率)

(3)以不同采样率采样后,语音信号的频谱分析

(4)采样前后声音的变化

(5)对降采样后的信号进行插值重构,滤波,恢复原信号

3.带噪声语音信号的频谱分析

(1)设计一频率已知的噪声信号,与实验2中原始语音信号相加,构造带噪声信号

(2)画出原始语音信号和加噪声后信号,以及它们的频谱图

(3)利用频谱图分析噪声信号和原语音信号的不同特性

4.对带噪声语音信号滤波去噪:

给定滤波器性能指标,采样窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采样的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;

(1)分析带噪声信号频谱,找出噪声所在的频率段

(2)利用matlab中已有的滤波器滤波

(3)根据语音信号特点,自己设计滤波器滤波

(4)比较各种滤波器性能(至少四种),选择一种合适的滤波器将噪声信号滤除

(5)回放语音信号,比较滤波前后声音的变化

3、实验原理:

DFT的运算量:

一次完整的DFT运算总共需要

次复数乘法和N(N-1)复数加法运算,因而直接计算DFT时,乘法次数和加法次数都和

成正比,当N很大时,运算量很客观的。

例如,当N=8时,DFT运算需64位复数乘法,当N=1024时,DFT运算需1048576次复数乘法。

而N的取值可能会很大,因而寻找运算量的途径是很必要的。

FFT算法原理:

大多数减少离散傅里叶变换运算次数的方法都是基于WNnk的对称性和周期性。

(1)对称性

(2)周期性

由此可得

1.利用第三个方程的这些特性,DFT运算中有些项可以合并;

2.利用

的对称性和周期性,可以将长序列的DFT分解为短序列的DFT。

前面已经说过,DFT的运算量是与

成正比的,所以N越小对计算越有利,因而小点数序列的DFT比大点数序列的DFT运算量要小。

快速傅里叶变换算法正是基于这样的基本思路而发展起来的,她的算法基本上可分成两大类,即按时间抽取法和按频率抽取法。

我们最常用的是

的情况,该情况下的变换成为基2快速傅里叶变换。

完成一次完整的FFT计算总共需要

次复数乘法运算和

次复数加法运算。

很明显,N越大,FFT的优点就越突出。

用一定宽度窗函数截取无限脉冲响应序列,获得有限长的脉冲响应序列,从而得到FIR滤波器,它是在时域进行的由理想滤波器的频率响应

推导出其单位冲激响应

,再设计一个FIR数字滤波器的单位冲激响应h(n)去逼近

,它表示

,由此得到的离散滤波器的系统传递函数

为无限长序列,因此

是物理不可实现的。

为了使系统变为物理可实现,且使实际的FIR滤波器频率响应尽可能逼近理想滤波器的频响特性,采用窗函数将无限脉冲响应

截取一段h(n)来近似表示

,可得

从而有:

式中N表示窗口长度,这样H(z)就是物理可实现的系统。

并且从线性相位FIR滤波器的充要条件可知,为了获得线性相位FIR数字滤波器的脉冲响应h(n),那么h(n)应有t=(N-1)/2的延迟,由于窗函数的选择对结果起着重要的作用,针对不同的信号和不同的处理目的来确定窗函数的选择才能收到良好的效果。

四、程序代码:

%%语言信号分析

%%读入语音并分析

[s,fs]=wavread('pb8k.wav');

%读取语音文件,s为读取的语音信号矩阵,fs为声音文件的采样率

t=length(s)/fs;

t=linspace(0,t,length(s));

figure('name','原始语音时域图')

plot(t,s')

title('原始语音波形')

xlabel('时间/s');ylabel('幅度')

s_fft=abs(fft(s));

f=linspace(0,fs,length(s));

figure('name','原始语音频谱')

plot(f,s_fft)

xlim([0,fs/2])

title('原始语音频谱')

gridon

xlabel('频率/Hz');ylabel('幅度')

choice=menu('是否播放音乐','播放','不播放');

ifchoice==1

wavplay(s,fs);

end

%%添加噪声

A=0.1;

fn=3300;

ns=A*sin(2*pi*fn*t);

sn=s+ns';

wavwrite(sn,fs,'pb8knoise.wav')

figure('name','加噪语音时域图')

plot(t,s')

title('加噪语音波形')

xlabel('时间/s');ylabel('幅度')

sn_fft=abs(fft(sn));

f=linspace(0,fs,length(sn));

figure('name','加噪语音频谱')

plot(f,sn_fft)

xlim([0,fs/2])

title('加噪语音频谱')

gridon

xlabel('频率/Hz');ylabel('幅度')

choice=menu('是否播放音乐','播放','不播放');

ifchoice==1

wavplay(sn,fs);

end

ps=sum(s.^2);

pn=sum(ns.^2);

snr1=20*log10(ps/pn);

msgbox(['加入噪声后信噪比',num2str(snr1),'dB'])

%%窗函数法设计滤波器

or=31;

b=fir1(or,(fn-400)/(fs/2));

%滤波器长度为32,(fn-400)/(fs/2)为通带截止频率

figure('name','滤波器特性')

freqz(b,1,128)

%%信号滤波

ss=filter(b,1,sn);%

ss_fft=abs(fft(ss));

f=linspace(0,fs,length(ss));

figure('name','滤波后语音频谱')

plot(f,ss_fft)

xlim([0,fs/2])

title('滤波后语音频谱')

gridon

xlabel('频率/Hz');ylabel('幅度')

choice=menu('是否播放音乐','播放','不播放');

ifchoice==1

wavplay(ss,fs);

end

%%性能分析

Latency=ceil((or-1)/2);

noise=s(1:

end-Latency)-ss(Latency+1:

end);

p_noise=sum(noise.^2);

snr2=20*log10(ps/p_noise);%信噪比计算

msgbox(['滤波后后信噪比',num2str(snr2),'dB'])

figure('name','信噪比增益')

bar([snr1,snr2])

text(1,snr1+2,[num2str(snr1),'dB'],'HorizontalAlignment','center')

text(2,snr2+2,[num2str(snr2),'dB'],'HorizontalAlignment','center')

5、运行结果:

信噪比增益:

五、总结:

这次试验我们在matlab的环境下完成了噪声的定位与去除。

通过这次试验,了解了MATLAB的使用方法,能够通过MATLAB构造函数,实现信号的预处理和频谱分析。

实验过程中,我们运用了相关运算和傅里叶变换的原理,通过将加噪声音频文件与原音频文件进行相关运算并设置阈值的方法进行定位,然后通过函数进行去除。

本实验的难点在于确定噪声所在频率,试验开始虽然出现了很多错误,经过不断调试和每一步结果的显示,最终成功运行。

通过这次试验,加深了我对数字信号处理理论知识,尤其是采样频率,频谱特性和数字滤波器的设计。

在具体编写代码的过程中,遇到了不少问题,比如设计数字滤波器所需函数的使用,各种参数的确定等等。

在这次试验中我们还是学到了不少课外知识,并将课上学到的理论知识应用到试验中,巩固了在课堂上学到的理论基础知识,从中学到了很多很实用的东西。

 

参考文献:

《数字信号处理》            姚天任    华中科技大学出版社

《Matlab教程》              张志涌   北京航空航天大学出版社 

《傅里叶变换》                 冷建华   清华大学出版社 

《傅里叶变换与频谱分析》       杨志坚   科学出版社

《数字信号处理》            刘明亮    北京航空航天大学出版社  

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2