现代信号处理课程设计报告中南大学.docx
《现代信号处理课程设计报告中南大学.docx》由会员分享,可在线阅读,更多相关《现代信号处理课程设计报告中南大学.docx(27页珍藏版)》请在冰豆网上搜索。
![现代信号处理课程设计报告中南大学.docx](https://file1.bdocx.com/fileroot1/2023-1/1/229f9af6-7291-4532-a10a-e04ff9b52f80/229f9af6-7291-4532-a10a-e04ff9b52f801.gif)
现代信号处理课程设计报告中南大学
目录
1、课程设计目的要求…………………………………………1
2、课程设计选题………………………………………………1
3、程序分析及运行果…………………………………………2
1、第一题……………………………………………………2
2、第三题……………………………………………………4
3、第五题……………………………………………………6
4、第七题……………………………………………………9
4、课程设计总结………………………………………………12
参考文献…………………………………………………………13
附.程序源代码……………………………………………………14
一、课程设计目的要求
1.全面复习课程所学理论知识,巩固所学知识重点和难点,将理论与实践很好地结合起来。
2.提高综合运用所学知识独立分析和解决问题的能力;
3.熟练使用一种高级语言进行编程实现。
二、课程设计选题
本次课程设计,按任务书要求选择了1、3、5、7题,第8题为选作,因为能力有限,所以并未选择,现将题目及要求摘录如下:
1.给定模拟信号:
,式中
,
,
。
对
进行采样,可得采样序列
1)选择采样频率
=1kHz,观测时间
ms,观测所得序列
及其幅频特性
2)改变采样频率
=300Hz,观测此时
的变化
3)令采样频率
=200Hz,观测此时
的变化
要求分析说明原理,绘出相应的序列及其它们对应的幅频特性曲线,指出
的变化,说明为什么?
3.一个连续信号含两个频率分量,经采样得
x(n)=sin2π*0.125n+cos2π*(0.125+Δf)nn=0,1……,N-1
已知N=16,Δf分别为1/16和1/64,观察其幅频特性;当N=128时,Δf不变,其结果有何不同,为什么?
分析说明原因,并打印出相应的幅频特性曲线
5.一个序列为
,使用FFT分析其频谱:
1)使用不同宽度的矩形窗截短该序列为M点长度,取M分别为:
a)M=20b)M=40c)M=160;观察不同长度的窗对谱分析结果的影响;
2)使用汉宁窗、哈明窗重做1)
3)对三种窗的结果进行理论分析及比较。
并绘出相应的幅频特性曲线
7.FIRDF的设计
分别利用矩形窗、汉宁窗、哈明窗设计一个N=11的线性相位FIR低通和高通数字滤波器,截止频率
,要求:
求出各滤波器的单位脉冲响应h(n);绘出各滤波器的幅频及相频响应曲线;观察各滤波器的通带波纹和阻带波纹;比较不同窗函数对滤波特性的影响。
3、程序分析及运行结果
程序综述及GUI界面:
程序全部利用matlab语言写成,通过与GUI模块的按钮控件pushbutton链接,使之能够通过按动按钮跳出显示窗口来实现程序的运行以及最后结果的呈现,简洁明了。
程序最终的GUI界面如下图所示:
1、第一题:
设计思想:
此程序按第一题题目要求,预先给定了模拟信号
,同时给出了相关参数,
,
,
。
按照题目要求直接在程序中定义相关变量并赋值。
题目还要求采取三种不同的采样频率分别为1kHZ、300HZ和200HZ,所以T1=0.001,T2=1/300,T3=0.005。
Fft函数对序列进行傅立叶变换,得到幅频特性曲线。
程序通过subplot、stem、plot等函数将结果显示在弹出的窗口中。
这样第一题的要求就基本实现了。
程序代码:
A=444.128;%设定参数
w=50*sqrt
(2)*pi;
a=50*sqrt
(2)*pi;
T1=0.001;
N1=50;
n=0:
49;
x1=A*exp(-a*n*T1).*sin(w*n*T1);%所给信号
figure;
subplot(3,2,1);stem(x1,'.');%坐标函数及现实函数
xlabel('n');ylabel('x(n)');
title('x(n)序列1');
y1=fft(x1,N1);%傅立叶变换
subplot(3,2,2);plot(abs(y1));
xlabel('(N=50wk=2pik/N)k');ylabel('|X1(jw)|');
title('幅频特性|X1(jw)|');
T2=1/300;
N2=15;
n=0:
14
x2=A*exp(-a*n*T2).*sin(w*n*T2);
subplot(3,2,3);stem(x2,'.');
xlabel('n');ylabel('x(n)');
title('x(n)序列2');
y2=fft(x2,N2);
subplot(3,2,4);plot(abs(y2));
xlabel('(N=15wk=2pik/N)k');ylabel('|X2(jw)|');
title('幅频特性|X2(jw)|');
T3=0.005;
N3=10;
n=0:
9;
x3=A*exp(-a*n*T3).*sin(w*n*T3);
subplot(3,2,5);stem(x3,'.');
xlabel('n');ylabel('x(n)');
title('x(n)序列3');
y3=fft(x3,N3);
subplot(3,2,6);plot(abs(y3));
xlabel('(N=10wk=2pik/N)k');ylabel('|X3(jw)|');
title('幅频特性|X3(jw)|');
运行结果:
结果分析:
从运行结果看,随着采样频率的减少,幅频特性的失真越明显。
所以采样频率越低,越容易失真。
2、第三题:
设计思想:
用FFT进行谱分析时,首先必须对信号进行采样,使之变成离散信号,然后就可按照前面的方法用FFT来对连续信号进行谱分析。
按采样定理,采样频率
应大于2倍信号的最高频率,为了满足采样定理,一般在采样之前要设置一个抗混叠低通滤波器。
按题目要求,讲程序分为N=16和N=128两部分。
首先定义出N、f1、f2等参数,接着列出题目所要求的信号,然后利用傅立叶变换函数,最后通过坐标以及输出函数得出相应幅频特性曲线。
程序代码:
%第三题(N=16)
N=16;
n=0:
15;
f1=1/16;
f2=1/64;
x1=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f1)*n);
y1=fft(x1,16);%傅立叶变换函数
figure;
subplot(2,2,1);stem(n,abs(y1),'.');
axis([01508]);%标注坐标长度
xlabel('(N=16wk=2pik/N)k');ylabel('|X1(K)|');
title('幅频特性|X1(K)|');
x2=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f2)*n);
y2=fft(x2,16);
subplot(2,2,2);stem(n,abs(y2),'.');
axis([01508]);
xlabel('(N=16wk=2pik/N)k');ylabel('|X2(K)|');
title('幅频特性|X2(K)|');
%第三题(N=128)
N=128;
n=0:
127;
f1=1/16;
f2=1/64;
x1=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f1)*n);
y3=fft(x1,128);
figure;
subplot(2,2,1);stem(n,abs(y3),'.');
axis([0127065]);
xlabel('(N=128wk=2pik/N)k');ylabel('|X3(K)|');
title('幅频特性|X3(K)|');
x2=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f2)*n);
y4=fft(x2,128);
subplot(2,2,2);stem(n,abs(y4),'.');
axis([0127065]);
xlabel('(N=128wk=2pik/N)k');ylabel('|X4(K)|');
title('幅频特性|X4(K)|');
运行结果:
N=16:
N=128:
结果分析:
由实验运行结果可得出当采样点数N不同时,信号的幅频特性是不同的,这是因为X(k)是x(n)的傅里叶变换X(ejw)在频率区间[0,2π]上的N点等间隔采样,这就是DFT的物理意义,由此可见,DFT的变换长度N不同,表示对X(ejw)在[0,2π]区间上的采样间隔和采样点数不同,所以DFT的变换结果不同。
3、第五题:
设计思想:
本题给定了一个序列,要求用窗函数截短。
通过调整窗口长度可以有效的控制过渡段的宽度。
其中题目中要求的汉宁窗是升余弦窗,能够使能量更集中在主瓣中;哈明窗是改进的升余弦窗,能使能量更加集中在主瓣中。
本程序定义了窗长度,给出相应的序列之后,用窗函数去截短相应的长度,最后通过窗口输出截短后的序列。
程序代码:
%第五题(矩形窗)
M1=20;M2=40;M3=160;%定义窗长度
n1=0:
19;n2=0:
39;n3=0:
159;
x1=0.5*cos(11*pi*n1/20)+cos(9*pi*n1/20);%相应序列
x2=0.5*cos(11*pi*n2/20)+cos(9*pi*n2/20);
x3=0.5*cos(11*pi*n3/20)+cos(9*pi*n3/20);
b1=boxcar(M1)'.*x1;%用窗函数截短
b2=boxcar(M2)'.*x2;
b3=boxcar(M3)'.*x3;
figure;
subplot(3,1,1);stem(abs(fft(b1)),'.');
subplot(3,1,2);stem(abs(fft(b2)),'.');
subplot(3,1,3);stem(abs(fft(b3)),'.');
%第五题(汉宁窗)
M1=20;M2=40;M3=160;%定义窗长度
n1=0:
19;n2=0:
39;n3=0:
159;
x1=0.5*cos(11*pi*n1/20)+cos(9*pi*n1/20);
x2=0.5*cos(11*pi*n2/20)+cos(9*pi*n2/20);
x3=0.5*cos(11*pi*n3/20)+cos(9*pi*n3/20);
y1=hanning(M1)'.*x1;%窗函数截短
y2=hanning(M2)'.*x2;
y3=hanning(M3)'.*x3;
figure;
subplot(3,1,1);stem(abs(fft(y1)),'.');
subplot(3,1,2);stem(abs(fft(y2)),'.');
subplot(3,1,3);stem(abs(fft(y3)),'.');
%第五题(哈明窗)
M1=20;M2=40;M3=160;%定义窗长度
n1=0:
19;n2=0:
39;n3=0:
159;
x1=0.5*cos(11*pi*n1/20)+cos(9*pi*n1/20);
x2=0.5*cos(11*pi*n2/20)+cos(9*pi*n2/20);
x3=0.5*cos(11*pi*n3/20)+cos(9*pi*n3/20);
h1=hamming(M1)'.*x1;%窗函数截短
h2=hamming(M2)'.*x2;
h3=hamming(M3)'.*x3;
figure;
subplot(3,1,1);stem(abs(fft(h1)),'.');
subplot(3,1,2);stem(abs(fft(h2)),'.');
subplot(3,1,3);stem(abs(fft(h3)),'.');
运行结果:
矩形窗:
汉宁窗:
哈明窗:
结果分析:
信号的截短产生了能量泄漏,不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样,用FFT算法计算频谱又产生了栅栏效应,所以不同的窗函数对信号频谱的影响是不一样的。
从运行结果中可以看出矩形窗主瓣比较集中,旁瓣较高,并有负旁瓣;汉宁窗和哈明窗结果从图上粗看基本一样,但哈明窗加权的系数能使旁瓣达到更小。
4、第七题:
设计思想:
题目要求分别利用矩形窗、汉宁窗、哈明窗设计一个N=11的线性相位FIR低通和高通数字滤波器。
FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性。
FIR滤波器设计的任务是选择有限长度的h(n),使传输函数H(ejw)满足技术要求。
本题中要求设计的线性相位FIR滤波器的,可利y用fir1函数设计出滤波器,再利用freqz函数得出其频率响应。
程序代码:
%第七题(矩形窗)
N=10;
wn=1/3;
b1lp=fir1(N,wn,boxcar(N+1));%用fir1函数设计低通滤波器
b1hp=fir1(N,wn,'high',boxcar(N+1));%用fir1函数设计高通滤波器
M=1024;
w=0:
(M-1);
t=0:
10;
h1lp=freqz(b1lp,1,w/M*2*pi);%得出频率响应
h1hp=freqz(b1hp,1,w/M*2*pi);
figure;
subplot(3,2,1);
stem(t,b1lp,'.');
subplot(3,2,2);
stem(t,b1hp,'.');
subplot(3,2,3);
plot(w(1:
(M/2))/M*2,abs(h1lp(1:
(M/2))));
subplot(3,2,4);
plot(w(1:
(M/2))/M*2,abs(h1hp(1:
(M/2))));
subplot(3,2,5);
plot(w/M*2,angle(h1lp));
subplot(3,2,6);
plot(w/M*2,angle(h1hp));
%第七题(汉宁窗)
N=10;
wn=1/3;
b2lp=fir1(N,wn,hanning(N+1));
b2hp=fir1(N,wn,'high',hanning(N+1));
M=1024;
w=0:
(M-1);
t=0:
10;
h2lp=freqz(b2lp,1,w/M*2*pi);
h2hp=freqz(b2hp,1,w/M*2*pi);
figure;
subplot(3,2,1);
stem(t,b2lp,'.');
subplot(3,2,2);
stem(t,b2hp,'.');
subplot(3,2,3);
plot(w(1:
(M/2))/M*2,abs(h2lp(1:
(M/2))));
subplot(3,2,4);
plot(w(1:
(M/2))/M*2,abs(h2hp(1:
(M/2))));
subplot(3,2,5);
plot(w/M*2,angle(h2lp));
subplot(3,2,6);
plot(w/M*2,angle(h2hp));
%第七题(哈明窗)
N=10;
wn=1/3;
b3lp=fir1(N,wn,hamming(N+1));
b3hp=fir1(N,wn,'high',hamming(N+1));
M=1024;
w=0:
(M-1);
t=0:
10;
h3lp=freqz(b3lp,1,w/M*2*pi);
h3hp=freqz(b3hp,1,w/M*2*pi);
figure;
subplot(3,2,1);
stem(t,b3lp,'.');
subplot(3,2,2);
stem(t,b3hp,'.');
subplot(3,2,3);
plot(w(1:
(M/2))/M*2,abs(h3lp(1:
(M/2))));
subplot(3,2,4);
plot(w(1:
(M/2))/M*2,abs(h3hp(1:
(M/2))));
subplot(3,2,5);
plot(w/M*2,angle(h3lp));
subplot(3,2,6);
plot(w/M*2,angle(h3hp));
运行结果:
矩形窗:
汉宁窗:
哈明窗:
结果分析:
如运行结果所示,通过三个窗口设计出的滤波器,得到的频率响应特性是不同的。
此题再次验证了第五题的结论:
矩形窗主瓣比较集中,旁瓣较高,并有负旁瓣;汉宁窗和哈明窗都有使能量集中在主瓣中的作用,但哈明窗加权的系数能使旁瓣达到更小。
4、课程设计总结:
随着课程设计报告的基本完成,本次课程设计终于接近了尾声。
本次课程设计要求我们利用上学期所学的现代信号处理课程的知识结合MATLAB编程工具,完成几道信号处理以及滤波器设计的题目,通过实际操作,回顾所学内容,夯实基础,强化理论知识,并体验理论与实际相结合的过程。
设计过程中遇到的第一个问题便是对于MATLAB语言的不熟悉,其实现在想想这个本不应该成为问题。
虽然本专业并没有开设MATLAB程序设计这门课,但是在上学期上现代信号处理课时老师已经向我们强调过MATLAB语言的重要性,并且也在课堂上通过PPT的形式向我们展示了其部分功能。
同时,老师还在上学期结课时特别提醒过课程设计会用到MATLAB语言,要求我们在暑假里去熟悉它。
可惜的是,老师的的话并没有引起我的足够重视,才导致等到要真正设计的时候一头雾水,无从下手。
通过这件事,我明白了对于一件事情,想要做得很好,提前做功课和准备是必不可少的,机会只垂青有准备的人。
当然,通过本次课程设计,我还是基本熟悉了一些MATLAB模块以及与本课程有关的一些函数的用法。
但是由于上学期先代信号处理课程学得不是很好,所以也就是在懂的同学的指导下按部就班的写了一些代码,也没有什么创新,但还是很好的回顾的所学的频谱分析以、傅立叶变换以及滤波器设计的内容。
也实际设计了一个滤波器,虽然借助与MATLAB函数,但也算一个不错的结果。
老师在任务书中提到的目的要求,我自认为多多少少完成到达了一些。
但不可否认的是还有很多没有达到。
总之,很多东西还是需要自己在不断的摸索中找到答案。
另外,通过这次课程设计让我认识了一门新的语言———MATLAB,它在以后的学习中还会用到,相信在以后学习的过程的中,我会比较好的掌握并运用它。
参考文献
1、《数字信号处理》第二版,丁玉美高西全等,西安电子科技大学出版社,2001.1
2、《MATLAB及在电子信息课程中的应用》,陈怀琛等,电子工业出版社出版,2002.4
3、《MATLAB数字信号处理与应用》,张德丰等,清华大学出版社,2010
4、《MATLAB数字信号处理》,王彬等,机械工业出版社,2010
5、《信号与信息处理基础》,彭军李宏等,中国铁道出版社,2009.2
附.程序源代码
functionvarargout=untitled(varargin)
%UNTITLEDM-fileforuntitled.fig
%UNTITLED,byitself,createsanewUNTITLEDorraisestheexisting
%singleton*.
%
%H=UNTITLEDreturnsthehandletoanewUNTITLEDorthehandleto
%theexistingsingleton*.
%
%UNTITLED('Property','Value',...)createsanewUNTITLEDusingthe
%givenpropertyvaluepairs.Unrecognizedpropertiesarepassedvia
%varargintountitled_OpeningFcn.Thiscallingsyntaxproducesa
%warningwhenthereisanexistingsingleton*.
%
%UNTITLED('CALLBACK')andUNTITLED('CALLBACK',hObject,...)callthe
%localfunctionnamedCALLBACKinUNTITLED.Mwiththegiveninput
%arguments.
%
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone
%instancetorun(singleton)".
%
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Edittheabovetexttomodifytheresponsetohelpuntitled
%LastModifiedbyGUIDEv2.521-Oct-201114:
29:
04
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@untitled_OpeningFcn,...
'gui_OutputFcn',@untitled_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
%Endinitializationcode-DONOTEDIT
%---Executesjustbeforeuntitledismadevisible.
functionuntitled_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%vararginunrecognizedPropertyName/PropertyValuepairsfromthe
%commandline(seeVARARGIN)
%Choosedefaultcommandlineou