数字信号课程设计.docx

上传人:b****6 文档编号:7341677 上传时间:2023-01-23 格式:DOCX 页数:15 大小:79.36KB
下载 相关 举报
数字信号课程设计.docx_第1页
第1页 / 共15页
数字信号课程设计.docx_第2页
第2页 / 共15页
数字信号课程设计.docx_第3页
第3页 / 共15页
数字信号课程设计.docx_第4页
第4页 / 共15页
数字信号课程设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数字信号课程设计.docx

《数字信号课程设计.docx》由会员分享,可在线阅读,更多相关《数字信号课程设计.docx(15页珍藏版)》请在冰豆网上搜索。

数字信号课程设计.docx

数字信号课程设计

工学院

数字信号处理课程设计

说明书

 

设计题目语音信号的处理与滤波

 

系别计算机工程系

专业班级通信061

学生姓名

学号

指导教师

日期日

 

摘要:

本文主要利用MATLAB工具采用双线性法和窗函数法设计IIR滤波器和FIR数字滤波器,并通过所设计的滤波器进行语音信号滤波分析,初步学会信号处理的过程和分析问题的能力。

关键词:

MATLAB滤波器设计

一.引言

随着信息时代和数字世界的到来,数字信号处理已成为今一门极其重要的学科和技术领域。

数字信号处理在通信语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。

在数字信号处理应用中,数字滤波器十分重要并已获得广泛应用。

二.MATLAB工具简介

1.MATLAB是矩阵实验室(Matrix Laboratory)之意,现已发展成为适合多学科,多种工作平台的功能强大的大型软件,已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;

2.MATLAB的语言特点

(1)。

语言简洁紧凑,使用方便灵活,库函数极其丰富。

MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。

由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。

(2)运算符丰富。

由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。

(3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。

(4)程序限制不严格,程序设计自由度大。

例如,在MATLAB里,用户无需对矩阵预定义就可使用。

(5)程序的可移植性很好,基本上不做修改就可在各种型号的计算机和操作系统上运行。

(6)MATLAB的图形功能强大。

在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。

MATLAB还具有较强的编辑图形界面的能力。

(7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。

由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。

(8)功能强大的工具箱是MATLAB的另一特色。

MATLAB包含两个部分:

核心部分和各种可选的工具箱。

核心部分中有数百个核心内部函数。

其工具箱又分为两类:

功能性工具箱和学科性工具箱。

功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。

功能性工具箱用于多种学科。

而学科性工具箱是专业性比较强的,如control,toolbox,signl proceessing toolbox,commumnication toolbox等。

(9)源程序的开放性。

开放性也许是MATLAB最受人们欢迎的特点。

除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。

三.设计目的

通过对课程设计,对信号的采集,处理,传输,显示,存储和分析等有一个系统的掌握和理解。

巩固和运用在数字信号处理课程中所学的理论知识和实验技能,掌握最基本的数字信号处理的理论和方法,培养发现问题,分析问题和解决问题的能力。

四.设计理论依据

采样频率,采样位数的概念,采样定理;时域信号的DFT,FFT及频谱分析;数字滤波器的设计原理和方法。

五.设计过程(设计步骤)

1.语音信号的采集及频谱分析

用WINDOWS下的录音机,用单声道录制一段音乐或声音,时间在5S内。

然后MATLAB软件平台下,利用函数WAVREAD对语音信号进行采样,记住采样频率和采样点数。

对语音信号进行快速傅立叶变换,在一个窗口同时画出信号的时域波形图和频谱图,分析语音信号的频谱特点。

程序如下:

[y,fs,bits]=wavread('music.wav',[102461500]);

sound(y,fs,bits);

Y=fft(y);plot(y);

figure

(1);title('语音信号的时域波形');

grid

figure

(2);

plot(abs(Y));title('语音信号的频谱特性');

grid

图形如下:

2:

设计数字滤波器

给出个滤波器的性能指标:

(1)低通滤波器性能指标fb=1000HZ,fc=1200HZ,As=100dB,Ap=1dB

(2)高通滤波器性能指标fb=2800HZ,fc=3000HZ,As=100dB,Ap=1dB

(3)带通滤波器性能指标fb1=1200HZ,fc1=1000HZ,fb2=2800HZ,fc2=3000HZAs=100dB,Ap=1dB

用窗函数法和双线性变换法设计以上要求的3种数字滤波器绘制个滤波器的频率响应。

IIR低通滤波器,程序如下:

Ap=1;As=100;fs=4000;fb=1000;fc=1200;

%频率预畸

wb=(fb/fs)*2*pi;%临界频率采用角频率表示

wc=(fc/fs)*2*pi;%临界频率采用角频率表示

OmegaP=2*fs*tan(wb/2);

OmegaS=2*fs*tan(wc/2);

[n,wn]=buttord(OmegaP,OmegaS,Ap,As,'s');

[b,a]=butter(n,wn,'s');

[bz,az]=bilinear(b,a,fs);%映射为数字的

[H,W]=freqz(bz,az);%绘出频率响应

plot(W*fs/(2*pi),abs(H));

title('IIR低通滤波器');

IIR高通滤波器,程序如下:

fs=22050;Ap=1;As=100;fb=5000;fc=4800;

wb=(fb/fs)*2*pi;%临界频率采用角频率表示

wc=(fc/fs)*2*pi;%临界频率采用角频率表示

OmegaP=2*fs*tan(wb/2);

OmegaS=2*fs*tan(wc/2);

[n,wn]=cheb1ord(OmegaP,OmegaS,Ap,As,'s');

[b,a]=cheby1(n,Ap,wn,'high','s');

[bz,az]=bilinear(b,a,fs);%映射为数字的

[H,W]=freqz(bz,az);%绘出频率响应

f=W/pi*11025;

plot(f,20*log10(abs(H)));

title('IIR高通滤波器');

IIR带通滤波器,程序如下:

fb1=1200;fb2=3000;fc1=1000;fc2=3200;

Ap=1;As=100;fs=8000;

wb1=(fb1/fs)*2*pi;wb2=(fb2/fs)*2*pi;

wc1=(fc1/fs)*2*pi;wc2=(fc2/fs)*2*pi;

OmegaP1=2*fs*tan(wb1/2);OmegaP2=2*fs*tan(wb2/2);

OmegaS1=2*fs*tan(wc1/2);OmegaS2=2*fs*tan(wc2/2);

[n,wn]=cheb1ord([OmegaP1,OmegaP2],[OmegaS1,OmegaS2],Ap,As,'s');

[b,a]=cheby1(n,Ap,wn,'bandpass','s');

[bz,az]=bilinear(b,a,fs);%映射为数字的

[H,W]=freqz(bz,az);%绘出频率响应

f=fs*W/pi/2;

plot(f,20*log10(abs(H)));

title('IIR带通滤波器');

FIR低通滤波器,程序如下:

fb=1000;fc=1200;fs=22050;

beta=10.056;

wb=2*pi*fb/fs;

wc=2*pi*fc/fs;

width=wc-wb;

wn=(wb+wc)/2;

n=ceil(12.8/width*pi);

b=fir1(n,wn/pi,kaiser(n+1,beta));

[H,W]=freqz(b);

f=fs*W/pi/2;

plot(f,20*log10(abs(H)));

gridon;

FIR高通滤波器,程序如下:

fb=5000;fc=4800;fs=22050;

[n,Wn,beta,typ]=kaiserord([fc,fb],[01],[0.0010.001],fs);

b=fir1(n,Wn,typ,kaiser(n+1,beta),'noscale');

[H,W]=freqz(b);

f=fs*W/pi/2;

%f=W/pi*(fs/2);

plot(f,20*log10(abs(H)));

title('FIR高通滤波器');

gridon;

FIR带通滤波器,程序如下:

fs=12000;

fcuts=[1000,1200,3000,3200];

mags=[0,1,0];

devs=[0.01,0.0078,0.01];

[n,wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs);

n=n+rem(n,2);

b=fir1(n,wn,ftype,kaiser(n+1,beta),'noscale');

[H,W]=freqz(b,1,1024,fs);

plot(W,abs(H));

title('FIR带通滤波器');

各滤波器的图形如下:

3:

用滤波器对信号进行滤波

IIR低通滤波器滤波,程序如下:

Ap=1;As=100;fs=4000;fb=1000;fc=1200;

%频率预畸

wb=(fb/fs)*2*pi;%临界频率采用角频率表示

wc=(fc/fs)*2*pi;%临界频率采用角频率表示

OmegaP=2*fs*tan(wb/2);

OmegaS=2*fs*tan(wc/2);

[n,wn]=buttord(OmegaP,OmegaS,Ap,As,'s');

[b,a]=butter(n,wn,'s');

[bz,az]=bilinear(b,a,fs);%映射为数字的

[H,W]=freqz(bz,az);%绘出频率响应

plot(W*fs/(2*pi),abs(H));

title('IIR低通滤波器');

[y,fs,bits]=wavread('music.wav');

x=filter(bz,az,y);

plot(x);title('滤波后的波形');

gridon

X=fft(x);

plot(abs(X));title('滤波后的频谱');

gridon

IIR高通滤波器滤波,程序如下:

fs=22050;Ap=1;As=100;fb=5000;fc=4800;

wb=(fb/fs)*2*pi;%临界频率采用角频率表示

wc=(fc/fs)*2*pi;%临界频率采用角频率表示

OmegaP=2*fs*tan(wb/2);

OmegaS=2*fs*tan(wc/2);

[n,wn]=cheb1ord(OmegaP,OmegaS,Ap,As,'s');

[b,a]=cheby1(n,Ap,wn,'high','s');

[bz,az]=bilinear(b,a,fs);%映射为数字的

[H,W]=freqz(bz,az);%绘出频率响应

f=W/pi*11025;

plot(f,20*log10(abs(H)));

title('IIR高通滤波器');

gridon;

[y,fs,bits]=wavread('music.wav');

x=filter(bz,az,y);

plot(x);title('滤波后的波形');

gridon

X=fft(x);

plot(abs(X));title('滤波后的频谱');

gridon

IIR带通滤波器滤波,程序如下:

fb1=1200;fb2=3000;fc1=1000;fc2=3200;

Ap=1;As=100;fs=8000;

wb1=(fb1/fs)*2*pi;wb2=(fb2/fs)*2*pi;

wc1=(fc1/fs)*2*pi;wc2=(fc2/fs)*2*pi;

OmegaP1=2*fs*tan(wb1/2);OmegaP2=2*fs*tan(wb2/2);

OmegaS1=2*fs*tan(wc1/2);OmegaS2=2*fs*tan(wc2/2);

[n,wn]=cheb1ord([OmegaP1,OmegaP2],[OmegaS1,OmegaS2],Ap,As,'s');

[b,a]=cheby1(n,Ap,wn,'bandpass','s');

[bz,az]=bilinear(b,a,fs);%映射为数字的

[H,W]=freqz(bz,az);%绘出频率响应

f=fs*W/pi/2;

plot(f,20*log10(abs(H)));

title('IIR带通滤波器');

gridon;

[y,fs,bits]=wavread('music.wav');

x=filter(bz,az,y);

plot(x);title('滤波后的波形');

gridon

X=fft(x);

plot(abs(X));title('滤波后的频谱');

gridon

FIR低通滤波器滤波,程序如下:

fb=1000;fc=1200;fs=22050;

beta=10.056;

wb=2*pi*fb/fs;

wc=2*pi*fc/fs;

width=wc-wb;

wn=(wb+wc)/2;

n=ceil(12.8/width*pi);

b=fir1(n,wn/pi,kaiser(n+1,beta));

[H,W]=freqz(b);

f=fs*W/pi/2;

%f=W/pi*(fs/2);

plot(f,20*log10(abs(H)));

title('FIR低通滤波器');

gridon;

[y,fs,bits]=wavread('music.wav');

x=fftfilt(b,y);

plot(x);title('滤波后的波形');

gridon

X=fft(x);

plot(abs(X));title('滤波后的频谱');

gridon

FIR高通滤波器滤波,程序如下:

fb=5000;fc=4800;fs=22050;

[n,Wn,beta,typ]=kaiserord([fc,fb],[01],[0.0010.001],fs);

b=fir1(n,Wn,typ,kaiser(n+1,beta),'noscale');

[H,W]=freqz(b);

f=fs*W/pi/2;

%f=W/pi*(fs/2);

plot(f,20*log10(abs(H)));

title('FIR高通滤波器');

gridon;

[y,fs,bits]=wavread('music.wav');

x=fftfilt(b,y);

plot(x);title('滤波后的波形');

gridon

X=fft(x);

plot(abs(X));title('滤波后的频谱');

gridon

FIR带通滤波器滤波,程序如下:

fs=12000;

fcuts=[1000,1200,3000,3200];

mags=[0,1,0];

devs=[0.01,0.0078,0.01];

[n,wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs);

n=n+rem(n,2);

b=fir1(n,wn,ftype,kaiser(n+1,beta),'noscale');

[H,W]=freqz(b,1,1024,fs);

plot(W,abs(H));

title('FIR带通滤波器');

[y,fs,bits]=wavread('music.wav');

x=fftfilt(b,y);

plot(x);title('滤波后的波形');

gridon

X=fft(x);

plot(abs(X));title('滤波后的频谱');

gridon

4:

回放语音信号

对语音信号进行回放,感觉滤波前后语音信号的变化。

Sound(x,fs,bits);

五.总结与分析

通过本次课程设计,使我们对信号的采集,处理,传输,显示,存储和分析等有一个系统的掌握和理解。

同时可以看到滤波器在语音处理的重要性,学到了很多滤波器的设计方法,对MATLAB这个软件有了进一步的了解,巩固和运用在数字信号处理课程中所学的理论知识和实验技能,掌握最基本的数字信号处理的理论和方法,提高了自己的发现问题,分析问题和解决问题的能力。

 

参考文献:

1.张威编.MATLAB基础与编程入门.西安:

西安电子科技大学出版社,2005

2.邹鲲,袁俊泉,编著.MATLAB6.x信号处理.北京:

清华大学出版社,2004

3.楼天顺,李博菡,编著.基于MATLAB的系统分析与设计——信号处理.西安电子科技大学出版社

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1