贵州大学-MATLAB数字信号处理课程设计

更新时间:2023-08-14 15:25:02 阅读量: 人文社科 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

贵州大学-MATLAB数字信号处理课程设计

MATLAB数字信号处理

班 级:学 号:姓 名: 指导教师:

2014年12月25日

贵州大学-MATLAB数字信号处理课程设计

目录

目录................................................................ 2 摘要................................................................ 3

一.设计目的和要求 .......................................... 4 二.设计原理及方法 .......................................... 4 2.1设计原理 ................................................. 4 2.2设计方法 ................................................. 7 三.实验内容 ................................................ 7 3.1信号的产生 ............................................... 7 3.2滤波器的设计 ............................................. 9 3.3信号滤波分析 ............................................ 12

参考文献........................................................... 19 学习心得........................................................... 20

贵州大学-MATLAB数字信号处理课程设计

摘要

几乎所有的工程技术领域都要涉及到信号处理问题,信号处理一般是包括数据采集以及对信号进行分析、变换、综合、估计与识别。对于数字信号来说,数字信号的幅度和时间都是离散值,数字信号处理是采用数值计算的方法完成对信号的处理。而待处理的的信号往往夹带着噪声。这就需要数字滤波器对信号进行滤波处理,滤除其中的噪声,得到想要的信号。所谓数字滤波器,就是输入、输出都是数字信号的,通过数值计算处理改变输入信号所含频率成分的相对比例,或者滤除某些频率成分的数字器件或程序。常用的经典滤波器有低通、高通、带通、带阻。

关键字:信号产生 数字滤波器噪声 频谱分析

贵州大学-MATLAB数字信号处理课程设计

一.设计目的和要求

1、产生一个连续信号,包含低频,中频,高频分量。 2、对产生的信号进行采样,进行频谱分析。

3、分别设计高通、低通、带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。

二.设计原理及方法

2.1设计原理

理论上信号的采样要符合奈奎斯特采样定律,就是采样频率要高一点,一般为被采信号最高频率的2倍,只有这样,才能保证频域不混叠,也就是采样出来数字信号中包含了被采信号的所有信息,而且没有引入干扰。这就是信号的时域采样。

频谱分析是指对信号进行频域谱的分析,观察其频域的各个分量的功率大小,其理论基础是傅立叶变换,现在一般采用数字的方法,也就是将时域信号数字化后做FFT,可以得到频域的波形。

数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。可以设计系统的频率响应,让它满足一定的要求,从而对通过该系统的信号的某些特定的频率成分进行过滤,这就是滤波器的基本原理。如果系统是一个连续系统,则滤波器称为模拟滤波器。如果系统是一个离散系统,则滤波器称为数字滤波器。

信号通过线性系统后,其输出就是输入信号和系统冲激响应的卷积。除了外,的波形将不同于输入波形。从频域分析来看,信号通过线性系统后,输出信号的频谱将是输入信号的频谱与系统传递函数的乘积。除非为常数,否则输出信号的频谱将不同于输入信号的频谱,某些频率成分较大的模,因此,中这些频率成分将得到加强,而另外一些频率成分的模很小甚至为零,中这部分频率分量将被削弱或消失。因此,系统的作用相当于对输入信号的频谱进行加权。

贵州大学-MATLAB数字信号处理课程设计

IIR滤波器的设计原理:IIR数字滤波器的设计一般是利用目前已经很成熟的模拟滤波器的设计方法来进行设计,通常采用模拟滤波器原型有butterworth函数、chebyshev函数、bessel函数、椭圆滤波器函数等。

IIR数字滤波器的设计步骤:

(1)按照一定规则把给定的滤波器技术指标转换为模拟低通滤波器的技术指标;

(2)根据模拟滤波器技术指标设计为响应的模拟低通滤波器;

(3)很据脉冲响应不变法和双线性不变法把模拟滤波器转换为数字滤波器; (4)如果要设计的滤波器是高通、带通或带阻滤波器,则首先把它们的技术指标转化为模拟低通滤波器的技术指标,设计为数字低通滤波器,最后通过频率转换的方法来得到所要的滤波器。

采样是连续信号数字处理的第一个关键环节。

对一个连续信号xa t 进行理想采样的过程可用(1.1)式表示。

a t xa t p t x

a t 为xa t 的理想采样,p t 为周期冲激脉冲,即 其中x

p t

n

t nT

XjΩ a t x的傅里叶变换a 为

1

Xa jΩ Xa jΩ jkΩs

Tm

将(1.2)式代入(1.1)式并进行傅里叶变换,

jΩt

jΩ Xxt t nT aa edt

n

n

xa t t nT e jΩtdt

n

x nT e

a

jΩnT

式中的xa nT 就是采样后得到的序列x n , 即x n xa nT

贵州大学-MATLAB数字信号处理课程设计

x n 的傅里叶变换为

X e

j

x n e

n

j n

比较(1.5)和(1.4)可知

jΩ X ej Xa

ΩT

为了在数字计算机上观察分析各种序列的频域特性,通常对X ej 在

0,2π 上进行M点采样来观察分析。对长度为N的有限长序列x n ,有

Xe

j k

x n e

n 0

N 1

j kn

其中 k

k,k 0,1, ,M 1 M

滤波器的设计,以巴特沃斯滤波器为例

以s替换

,将幅度平方函数

写成s函数

复变量:s=

,上式表示有2N个极点,极点

用下面公式表示:

=

K=0,1,2,3······2N-1。

贵州大学-MATLAB数字信号处理课程设计

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合成。

产生的信号

2.52

1.51

幅度

0.50-0.5-1-1.5

0.0010.0020.0030.0040.0050.0060.0070.0080.009

时间

0.01

图1信号的产生

对合成信号进行频谱分析

利用MATLAB内部函数:z=fft(y);,对信号进行频谱分析

贵州大学-MATLAB数字信号处理课程设计

产生的信号

42

幅度

0-20

0.0010.0020.0030.0040.0050.0060.0070.0080.009

时间

信号频谱分析

0.01

1500

1000

幅度

500

0100200

300400500频率单位(HZ)

600700800

图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('幅度');

贵州大学-MATLAB数字信号处理课程设计

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)));grid on title('低通滤波器'); ylabel('幅度/db'); xlabel('频率单位(HZ)'); axis([0,200,-1,1]);

通过上述程序的运行得到下述波形:

低通滤波器

10.80.60.40.2

幅度/db

0-0.2-0.4-0.6-0.8-1

频率单位(HZ)

贵州大学-MATLAB数字信号处理课程设计

图3低通滤波器

结果分析:图3为设计的低通滤波器,通带截止频率为100HZ,阻带截止频率为150HZ。图示得到的低通滤波器满足实验要求。 带通滤波器:

带通滤波器

10.5

幅度/db

0-0.5-1

050100150

200250300频率单位(HZ)

350400450500

图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);grid on 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;

贵州大学-MATLAB数字信号处理课程设计

[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)));grid on title('高通滤波器'); ylabel('幅度/db'); xlabel('频率单位(HZ)');

高通滤波器

2000

-200-400

幅度/db

-600-800-1000-1200-1400

100

200300

400500600频率单位(HZ)

700800900

图5高通滤波器

实验结果分析:通过对高通滤波器的设计得到图5所示的高通滤波器,通带截止频率为400HZ阻带截止频率为500HZ。经试验验证满足设计指标。 5.信号处理

把产生的信号分别通过设计的高、低、带通滤波器观察实验波形。

贵州大学-MATLAB数字信号处理课程设计

3.3信号滤波分析

低通滤波后的信号分析:

产生的信号

幅度

时间(t

产生信号的频谱分析

幅度

频率单位(HZ

)低通滤波器

幅度/db

频率单位(HZ)

低通滤波器滤波后信号

幅度/db

频率单位(HZ

)滤除后信号的频谱分析

幅度

时间(t)

图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));grid on title('产生的信号'); ylabel('幅度'); xlabel('时间(t)')

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%傅里叶变换频谱分析 z=fft(y,2048);

贵州大学-MATLAB数字信号处理课程设计

subplot(5,1,2);

plot((0:1023)*2500/1024,abs(z(1:1024)));grid on 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)));grid on 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)));grid on

贵州大学-MATLAB数字信号处理课程设计

title('滤除后信号的频谱分析'); ylabel('幅度'); xlabel('时间(t)') axis([0,800,0,1500])

实验结果分析:经过低通滤波器后信号的低频成分被保留,中频和高频成分被有效滤除,得到图6所示的波形达到了滤波的目的。 低通滤波后的信号分析:

产生的信号

幅度

时间(t

产生信号的频谱分析

幅度

频率单位(HZ

)带通滤波器

幅度/db

频率单位(HZ

)带通滤波器滤波后信号

幅度/db

频率单位(HZ

)滤除后信号的频谱分析

幅度

时间(t)

图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));grid on

贵州大学-MATLAB数字信号处理课程设计

title('产生的信号'); ylabel('幅度'); xlabel('时间(t)')

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%傅里叶变换频谱分析 z=fft(y,2048); subplot(5,1,2);

plot((0:1023)*2500/1024,abs(z(1:1024)));grid on 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);grid on title('带通滤波器'); ylabel('幅度/db'); xlabel('频率单位(HZ)'); axis([0,500,-1,1]);

%%%%%%%%%%%%%%%%%%%%%%%%%%%滤波 M=filter(B,A,y); subplot(5,1,4); plot(M);

title('带通滤波器滤波后信号');

贵州大学-MATLAB数字信号处理课程设计

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)));grid on title('滤除后信号的频谱分析'); ylabel('幅度'); xlabel('时间(t)') axis([0,800,0,1000]) 高通滤波后的信号分析:

产生的信号

幅度

时间(t

产生信号的频谱分析

幅度

频率单位(HZ)

高通滤波器

幅度/db

频率单

位(HZ)高通滤波器滤波后信号

幅度/db

频率单位(HZ

)滤除后信号的频谱分析

幅度

时间(t)

高通滤波器实验代码:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%信号产生 Fs=5000;

贵州大学-MATLAB数字信号处理课程设计

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));grid on title('产生的信号'); ylabel('幅度'); xlabel('时间(t)')

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%傅里叶变换频谱分析 z=fft(y,2048); subplot(5,1,2);

plot((0:1023)*2500/1024,abs(z(1:1024)));grid on 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)));grid on title('高通滤波器'); ylabel('幅度/db'); xlabel('频率单位(HZ)'); axis([200,700,-70,0])

%%%%%%%%%%%%%%%%%%%%%%%%%%%滤除后的信号 M=filter(BH,AH,y); subplot(5,1,4);

贵州大学-MATLAB数字信号处理课程设计

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)));grid on title('滤除后信号的频谱分析'); ylabel('幅度');

xlabel('时间(t)')axis([0,800,0,1000])

贵州大学-MATLAB数字信号处理课程设计

参考文献

[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.

贵州大学-MATLAB数字信号处理课程设计

学习心得

学习了MATLAB这门课程,我了解该软件的基本功能,也知道了该软件在我们生活中的重要地位。随着社会的不断发展,科技的不断进步,计算机的普及,它也被应用在越来越多的方面。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,MATLAB的最突出的特点就是简洁。

MATLAB相对于其他的一些编程软件有许多的优点:

一、语言简洁紧凑,使用方便灵活,库函数极其丰富。 二、运算符丰富。

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

四、语法限制不严格,程序设计自由度大。

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

六、MATLAB的图形功能强大。

用madlab创建矩阵时,方法有两种:第一、可以直接依次输入矩阵各行各列的元素,但矩阵元素必须用[ ]括住,矩阵元素必须用逗号或空格分隔 ,在[ ]内矩阵的行与行之间必须用分号分隔。第二、用MATLAB函数创建矩阵。MATLAB可以进行矩阵的加减、乘除的元素,求可逆矩阵、转置矩阵,求矩阵的特征值,求线性方程组等等。 wk_ad_begin({pid : 21});wk_ad_after(21, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();});

MATLAB的功能是非常强大的,MATLAB不仅有强大的运算功能,它还有强大的绘图功能,我对它的了解也仅仅就是一点点,或许说还没有入门。比如说它含有丰富的内建函数,例如数学函数中的三角函数、复函数、多项式函数、数据分析函数的求平均值、最大最小值、排序等,以及逻辑/选择函数如if-else等,还有用来模拟随机发生事件的随机函数。这些我都不了解。

虽学习MATLAB的时间虽然很短,但却让我了解到了它的强大和它的功能。我想就算时间足够,老师也不能把所有的都讲解给我们,因为一个软件的功能需要我们自己不断的去摸索,老师也不可能知道所有。老师只是个指路的明灯,最终的学习还是要靠自己。而且在摸索过程中,我们能够发现和体会学习的快乐!

通过此次数字信号处理课程设计,我了解了关于MATLAB软件在数字信号处理方面的应用,又一次学习了MATLAB软件的使用和程序的设计,加深了对MATLAB的仿真的了解,我对数字信号处理的理解更加加深了一步。MATLAB拥有强大的数据仿真能力,在生产和研究中起着非常大的作用。

MATLAB语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。特别是MATLAB还具有信号分析

贵州大学-MATLAB数字信号处理课程设计

工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。这使得我在以后的学习工作做了很好的铺垫,在这过程中我遇到了所多的难题,通过与老师的交流和学习,让我学会了很多在课堂上没有理解的难点。同时也进一步加深了对MATLAB的理解和认识。

MATLAB软件使得困难、枯燥的数字处理过程变得非常简单,不仅能够非常迅速的计算出幅频相频、卷积、DFT、FFT等,而且还能自动画出连续、离散的波形曲线。使我们能非常直观的了解数字信号的处理结果。

最后,在这里要感谢老师的指导。没有老师的指导督促,本次课程设计也不能按时按质的完成。同时还要感谢同学的帮助,我们一起查资料、调程序,一起收获成功的喜悦。通过一点一点的积累,我相信我能为祖国的通信行业做出我应有的贡献。

本文来源:https://www.bwwdw.com/article/0htj.html

Top