基于MATLAB的数字信号处理与分析课程设计.docx
- 文档编号:9416593
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:21
- 大小:195.04KB
基于MATLAB的数字信号处理与分析课程设计.docx
《基于MATLAB的数字信号处理与分析课程设计.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的数字信号处理与分析课程设计.docx(21页珍藏版)》请在冰豆网上搜索。
基于MATLAB的数字信号处理与分析课程设计
摘要
几乎所有的工程技术领域都要涉及到信号处理问题,信号处理一般是包括数据采集以及对信号进行分析、变换、综合、估计与识别。
对于数字信号来说,数字信号的幅度和时间都是离散值,数字信号处理是采用数值计算的方法完成对信号的处理。
而待处理的的信号往往夹带着噪声。
这就需要数字滤波器对信号进行滤波处理,滤除其中的噪声,得到想要的信号。
所谓数字滤波器,就是输入、输出都是数字信号的,通过数值计算处理改变输入信号所含频率成分的相对比例,或者滤除某些频率成分的数字器件或程序。
常用的经典滤波器有低通、高通、带通、带阻。
关键字:
信号产生数字滤波器噪声频谱分析
一.设计目的和要求
1、产生一个连续信号,包含低频,中频,高频分量。
2、对产生的信号进行采样,进行频谱分析。
3、分别设计高通、低通、带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。
二.设计原理及方法
2.1设计原理
理论上信号的采样要符合奈奎斯特采样定律,就是采样频率要高一点,一般为被采信号最高频率的2倍,只有这样,才能保证频域不混叠,也就是采样出来数字信号中包含了被采信号的所有信息,而且没有引入干扰。
这就是信号的时域采样。
频谱分析是指对信号进行频域谱的分析,观察其频域的各个分量的功率大小,其理论基础是傅立叶变换,现在一般采用数字的方法,也就是将时域信号数字化后做FFT,可以得到频域的波形。
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
可以设计系统的频率响应,让它满足一定的要求,从而对通过该系统的信号的某些特定的频率成分进行过滤,这就是滤波器的基本原理。
如果系统是一个连续系统,则滤波器称为模拟滤波器。
如果系统是一个离散系统,则滤波器称为数字滤波器。
信号通过线性系统后,其输出就是输入信号和系统冲激响应的卷积。
除了外,的波形将不同于输入波形。
从频域分析来看,信号通过线性系统后,输出信号的频谱将是输入信号的频谱与系统传递函数的乘积。
除非为常数,否则输出信号的频谱将不同于输入信号的频谱,某些频率成分较大的模,因此,中这些频率成分将得到加强,而另外一些频率成分的模很小甚至为零,中这部分频率分量将被削弱或消失。
因此,系统的作用相当于对输入信号的频谱进行加权。
IIR滤波器的设计原理:
IIR数字滤波器的设计一般是利用目前已经很成熟的模拟滤波器的设计方法来进行设计,通常采用模拟滤波器原型有butterworth函数、chebyshev函数、bessel函数、椭圆滤波器函数等。
IIR数字滤波器的设计步骤:
(1)按照一定规则把给定的滤波器技术指标转换为模拟低通滤波器的技术指标;
(2)根据模拟滤波器技术指标设计为响应的模拟低通滤波器;
(3)很据脉冲响应不变法和双线性不变法把模拟滤波器转换为数字滤波器;
(4)如果要设计的滤波器是高通、带通或带阻滤波器,则首先把它们的技术指标转化为模拟低通滤波器的技术指标,设计为数字低通滤波器,最后通过频率转换的方法来得到所要的滤波器。
采样是连续信号数字处理的第一个关键环节。
对一个连续信号
进行理想采样的过程可用(1.1)式表示。
其中
为
的理想采样,
为周期冲激脉冲,即
的傅里叶变换
为
将(1.2)式代入(1.1)式并进行傅里叶变换,
式中的
就是采样后得到的序列
,即
的傅里叶变换为
比较(1.5)和(1.4)可知
为了在数字计算机上观察分析各种序列的频域特性,通常对
在
上进行M点采样来观察分析。
对长度为N的有限长序列
,有
其中
滤波器的设计,以巴特沃斯滤波器为例
以s替换
,将幅度平方函数
写成s函数
复变量:
s=
上式表示有2N个极点,极点
用下面公式表示:
=
K=0,1,2,3······2N-1。
2.2设计方法
首先利用MATLAB分别产生低频中频高频信号,然后进行叠加得到连续时间信号;对所产生的连续时间信号进行采样,得到数字信号;对信号进行FFT频谱分析,绘制其频谱图;根据信号频谱分析的结果,分别设计高通,低通,带通滤波器,得到滤波器的幅频及相频特性。
三.实验内容
3.1信号的产生
在MATLAB里面利用正玄函数产生中、低高频的合成信号
y=sin(2*pi*50*x)+sin(2*pi*200*x)+sin(2*pi*600*x);产生的信号由50HZ、200HZ、600HZ合成。
图1信号的产生
对合成信号进行频谱分析
利用MATLAB内部函数:
z=fft(y);,对信号进行频谱分析
图2产生信号的频谱
通过对信号的频谱分析我们可以清楚的看到产生的信号的频谱,分为高、低、中三种频率。
实验的源程序为:
Fs=5000;
x=0:
1/Fs:
20*pi;
y=sin(2*pi*50*x)+sin(2*pi*200*x)+sin(2*pi*600*x);%产生低频、中频、高频信号
subplot(2,1,1);
plot(x(1:
50),y(1:
50));
title('产生的信号');
ylabel('幅度');
xlabel('时间')
z=fft(y,2048);%傅里叶变换频谱分析
subplot(2,1,2);
plot((0:
1023)*2500/1024,abs(z(1:
1024)));
title('信号频谱分析');
ylabel('幅度');
xlabel('频率单位(HZ)')
axis([0,800,0,1500])
3.2滤波器的设计
低通滤波器的设计
wp=2*pi*100;ws=2*pi*150;Rp=0.1;As=50;
[N,wc]=buttord(wp,ws,Rp,As,'s');
[B,A]=butter(N,wc,'s');
k=0:
511;
fk=0:
150/512:
150;wk=2*pi*fk;
HK=freqs(B,A,wk);
plot(fk,20*log(abs(HK)));gridon
title('低通滤波器');
ylabel('幅度/db');
xlabel('频率单位(HZ)');
axis([0,200,-1,1]);
通过上述程序的运行得到下述波形:
图3低通滤波器
结果分析:
图3为设计的低通滤波器,通带截止频率为100HZ,阻带截止频率为150HZ。
图示得到的低通滤波器满足实验要求。
带通滤波器:
图4带通滤波器
带通滤波器代码:
fpl=150;fpu=250;fsl=100;fsu=500;fs=5000;
wp=[2*fpl/fs,2*fpu/fs];ws=[2*fsl/fs,2*fsu/fs];
rp=1;rs=40;
[N,wpo]=ellipord(wp,ws,rp,rs);
[B,A]=ellip(N,rp,rs,wpo);
[HK,w]=freqz(B,A,512);
plot(w/(2*pi)*fs,HK);gridon
title('带通滤波器');
ylabel('幅度/db');
xlabel('频率单位(HZ)');
axis([0,500,-1,1]);
实验结果:
通过对带通滤波器的设计得到图4所示的带通波形,通带截止频率为100HZ、300HZ,阻带截止频率为150HZ、250HZ。
上述参数经过试验满足实验要求。
高通滤波器的设计
高通滤波器代码:
wp=2*pi*500;ws=2*pi*400;Rp=0.01;As=50;
[N,wc]=buttord(wp,ws,Rp,As,'s');
[BH,AH]=butter(N,wc,'high','s');
k=0:
511;
fk=100:
900/4096:
900;wk=2*pi*fk;
HK=freqs(BH,AH,wk);
plot(fk,20*log(abs(HK)));gridon
title('高通滤波器');
ylabel('幅度/db');
xlabel('频率单位(HZ)');
图5高通滤波器
实验结果分析:
通过对高通滤波器的设计得到图5所示的高通滤波器,通带截止频率为400HZ阻带截止频率为500HZ。
经试验验证满足设计指标。
5.信号处理
把产生的信号分别通过设计的高、低、带通滤波器观察实验波形。
3.3信号滤波分析
低通滤波后的信号分析:
图6低通滤波后的信号
低通滤波器实验代码:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%信号产生
Fs=5000;
x=0:
1/Fs:
2*pi;
y=sin(2*pi*50*x)+sin(2*pi*200*x)+sin(2*pi*600*x);%产生低频、中频、高频信号
subplot(5,1,1);
plot(x(1:
50),y(1:
50));gridon
title('产生的信号');
ylabel('幅度');
xlabel('时间(t)')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%傅里叶变换频谱分析
z=fft(y,2048);
subplot(5,1,2);
plot((0:
1023)*2500/1024,abs(z(1:
1024)));gridon
title('产生信号的频谱分析');
ylabel('幅度');
xlabel('频率单位(HZ)')
axis([0,800,0,1500])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%低通滤波器
wp=2*100/Fs;ws=2*150/Fs;Rp=2;As=30;
[N,wc]=buttord(wp,ws,Rp,As);
[B,A]=butter(N,wc);
[HK,f]=freqz(B,A,512,Fs);
subplot(5,1,3);
plot(f,20*log(abs(HK)));gridon
title('低通滤波器');
ylabel('幅度/db');
xlabel('频率单位(HZ)');
axis([0,200,-50,1]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%滤波
M=filter(B,A,y);
subplot(5,1,4);
plot(M);
title('低通滤波器滤波后信号');
ylabel('幅度/db');
xlabel('频率单位(HZ)');
axis([0,1000,-3,3])
%%%%%%%%%%%%%%%%%%%%%%%%%滤除后信号的频谱
z=fft(M,2048);
subplot(5,1,5);
plot((0:
1023)*2500/1024,abs(z(1:
1024)));gridon
title('滤除后信号的频谱分析');
ylabel('幅度');
xlabel('时间(t)')
axis([0,800,0,1500])
实验结果分析:
经过低通滤波器后信号的低频成分被保留,中频和高频成分被有效滤除,得到图6所示的波形达到了滤波的目的。
低通滤波后的信号分析:
图7带通滤波后的信号
带通滤波器实验代码:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%信号产生
Fs=5000;
x=0:
1/Fs:
2*pi;
y=sin(2*pi*50*x)+sin(2*pi*200*x)+sin(2*pi*600*x);%产生低频、中频、高频信号
subplot(5,1,1);
plot(x(1:
50),y(1:
50));gridon
title('产生的信号');
ylabel('幅度');
xlabel('时间(t)')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%傅里叶变换频谱分析
z=fft(y,2048);
subplot(5,1,2);
plot((0:
1023)*2500/1024,abs(z(1:
1024)));gridon
title('产生信号的频谱分析');
ylabel('幅度');
xlabel('频率单位(HZ)')
axis([0,800,0,1000])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%带通滤波器
fpl=150;fpu=250;fsl=100;fsu=500;fs=5000;
wp=[2*fpl/fs,2*fpu/fs];ws=[2*fsl/fs,2*fsu/fs];
rp=1;rs=40;
[N,wpo]=ellipord(wp,ws,rp,rs);
[B,A]=ellip(N,rp,rs,wpo);
[HK,w]=freqz(B,A,512);
subplot(5,1,3);
plot(w/(2*pi)*fs,HK);gridon
title('带通滤波器');
ylabel('幅度/db');
xlabel('频率单位(HZ)');
axis([0,500,-1,1]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%滤波
M=filter(B,A,y);
subplot(5,1,4);
plot(M);
title('带通滤波器滤波后信号');
ylabel('幅度/db');
xlabel('频率单位(HZ)');
axis([0,800,-3,3])
%%%%%%%%%%%%%%%%%%%%%%%%%滤除后信号的频谱
z=fft(M,2048);
subplot(5,1,5);
plot((0:
1023)*2500/1024,abs(z(1:
1024)));gridon
title('滤除后信号的频谱分析');
ylabel('幅度');
xlabel('时间(t)')
axis([0,800,0,1000])
高通滤波后的信号分析:
高通滤波器实验代码:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%信号产生
Fs=5000;
x=0:
1/Fs:
2*pi;
y=sin(2*pi*50*x)+sin(2*pi*200*x)+sin(2*pi*600*x);%产生低频、中频、高频信号
subplot(5,1,1);
plot(x(1:
50),y(1:
50));gridon
title('产生的信号');
ylabel('幅度');
xlabel('时间(t)')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%傅里叶变换频谱分析
z=fft(y,2048);
subplot(5,1,2);
plot((0:
1023)*2500/1024,abs(z(1:
1024)));gridon
title('产生信号的频谱分析');
ylabel('幅度');
xlabel('频率单位(HZ)')
axis([0,800,0,1000])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%高通滤波器
ws=2*400/Fs;wp=2*500/Fs;Rp=0.1;As=40;
[N,wc]=buttord(wp,ws,Rp,As);
[BH,AH]=butter(N,wc,'high');
HK=freqz(BH,AH,512,Fs);
subplot(5,1,3);
plot(f,20*log(abs(HK)));gridon
title('高通滤波器');
ylabel('幅度/db');
xlabel('频率单位(HZ)');
axis([200,700,-70,0])
%%%%%%%%%%%%%%%%%%%%%%%%%%%滤除后的信号
M=filter(BH,AH,y);
subplot(5,1,4);
plot(M);
title('高通滤波器滤波后信号');
ylabel('幅度/db');
xlabel('频率单位(HZ)');
axis([50,400,-2,2])
%%%%%%%%%%%%%%%%%%%%%%%%%滤除后信号的频谱
z=fft(M,2048);
subplot(5,1,5);
plot((0:
1023)*2500/1024,abs(z(1:
1024)));gridon
title('滤除后信号的频谱分析');
ylabel('幅度');
xlabel('时间(t)')axis([0,800,0,1000])
总结与致谢
通过此次数字信号处理课程设计,我了解了关于MATLAB软件在数字信号处理方面的应用,又一次学习了MATLAB软件的使用和程序的设计,加深了对MATLAB的仿真的了解,我对数字信号处理的理解更加加深了一步。
MATLAB拥有强大的数据仿真能力,在生产和研究中起着非常大的作用。
MATLAB语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。
特别是MATLAB还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。
这使得我在以后的学习工作做了很好的铺垫,在这过程中我遇到了所多的难题,通过与老师的交流和学习,让我学会了很多在课堂上没有理解的难点。
同时也进一步加深了对MATLAB的理解和认识。
MATLAB软件使得困难、枯燥的数字处理过程变得非常简单,不仅能够非常迅速的计算出幅频相频、卷积、DFT、FFT等,而且还能自动画出连续、离散的波形曲线。
使我们能非常直观的了解数字信号的处理结果。
最后,在这里要感谢老师的指导。
没有老师的指导督促,本次课程设计也不能按时按质的完成。
同时还要感谢同学的帮助,我们一起查资料、调程序,一起收获成功的喜悦。
通过一点一点的积累,我相信我能为祖国的通信行业做出我应有的贡献。
参考文献
[1]高西全、丁玉美编著.数字信号处理.西安:
西安电子科技大学出版社,2008.
[2]丁玉美、高西全编著.数字信号处理学习指导.西安:
西安电子科技大学出版社,2001.
[3]郑君里等编.信号与系统.北京:
高等教育出版社,2000.
[4]刘树棠译.数字信号处理——使用MATLAB.西安:
西安交通大学出版社,2002.
[5]导向科技编著.MATLAB程序设计与实例应用.北京:
中国铁道出版社,2001.
[6]罗军辉等编著.MATLAB7.0在数字信号处理中的应用.北京:
机械工业出版社,2005.
[7]陈怀琛等编著.MATLAB及在电子信息课中的应用.北京:
电子工业出版社,2002.
[8]胡广书编著.数字信号处理――理论、算法与实现.北京:
清华大学出版社,2002.
[9]梁虹等编.信号与线性系统分析――基于MATLAB的方法与实现.北京:
高等教育出版社,2006.
[10]刘卫国主编.MATLAB程序设计与应用(第二版).北京:
高等教育出版社,2006.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 数字信号 处理 分析 课程设计