现代信号课程设计实践.docx
《现代信号课程设计实践.docx》由会员分享,可在线阅读,更多相关《现代信号课程设计实践.docx(52页珍藏版)》请在冰豆网上搜索。
现代信号课程设计实践
中南大学《现代信号处理》课程设计报告
学院:
信息科学与工程学院
专业班级:
姓名:
学号:
指导老师:
赵亚湘、郭丽梅
设计时间:
2012年9月
1、课程设计要求
2、界面设计
3、课程设计选题
4、设计过程
(1)题目设计思想
(2)源代码
(3)运行结果
(4)结果分析
5、设计总结与心得体会
6、参考文献
7、鸣谢
1、课程设计要求
1.全面复习课程所学理论知识,巩固所学知识重点和难点,将理论与实践很好地结合起来。
2.掌握信号分析与处理的基本方法与实现
3.提高综合运用所学知识独立分析和解决问题的能力;
4.熟练使用一种高级语言进行编程实现
2、界面设计
在MATLAB主界面中输入“guide”,再敲击回车键,弹出GUI界面窗口,即可新建GUI界面,如图2.1所示:
图2.1GUI界面的新建窗口图
图2.1的窗口中点击“OK”,则可新建一个GUI界面,并进入其编辑窗口,如图2.2所示:
图2.2GUI界面的编辑窗口图
随后便可在此窗口内编辑演示界面,此次设计主要利用的是StaticText(静态文本)和PushButton(按钮)。
在界面中输入相关的静态文本,并新建若干个按钮,再以此在每个按钮上点击右键,选择ViewCallBacks调出CallBack函数,将相应设计题的源代码输入CallBack函数界面中对应按钮的段落后。
如图2.3和2.4所示:
.
图2.3调用CallBack的操作流程图
图2.4CallBack代码编辑窗口图
最后得到本次课程设计的简洁主界面如图2.5:
图2.5主界面
三、课程设计选题
本次课程设计,按任务书要求选择了1至6题,第7、8题为选作,因为能力与时间有限,所以并未选择,现将题目及要求摘录如下:
1.给定模拟信号:
1)选择采样频率Fs=5000Hz和合适的信号长度,采样得到序列x1(n)。
求并画出x1(n)及其序列傅里叶变换|X1(ejw)|。
2)选择采样频率Fs=1000Hz和合适的信号长度,采样得到序列x2(n)。
求并画出x2(n)及其序列傅里叶变换|X2(ejw)|。
3)说明|X1(ejw)|与|X2(ejw)|间的区别,为什么?
2.已知两系统分别用下面差分方程描述:
试分别写出它们的传输函数,并分别打印
曲线。
说明这两个系统的区别。
3.已知已调信号
,其中调制信号
,载波为
。
1)选择合适的采样频率及信号长度,使用FFT分析该已调信号的频谱并画出其幅频特性和相频特性曲线图
2)对该已调信号进行解调,恢复原调制信号。
4.已知三角波序列
和反三角波序列
:
用N=8点FFT分析序列x1(n)和x2(n)的幅频特性,观察两者的序列形状和频谱特性曲线有什么异同?
绘出两序列及其幅频特性曲线。
在x1(n)和x2(n)的末尾补零,用N=16点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?
两情况的FFT频谱还有相同之处吗?
这些变化说明了什么?
5.设有一信号
,设计各种IIR数字滤波器以实现:
1)低通滤波器,滤除
的成分,保留成分
2)高通滤波器,滤除
的成分,保留成分
3)带通滤波器,滤除
的成分,保留成分
4)带阻滤波器,滤除
的成分,保留成分
要求:
1)求出各个滤波器的阶数,设计各滤波器。
画出各滤波器的幅频和相频特性,计算滤波器的系统函数H(z)
2)画出滤波前后信号的时域、频域波形
6.
(1)用Hanning窗设计一线性相位带通数字滤波器,要求:
N=15,
。
观察它的实际3dB和20dB带宽。
N=45,重复这一设计,观察幅频和相位特性的变化,注意长度N变化的影响;
(2)分别改用矩形窗和Blackman窗,设计
(1)中的带通滤波器,观察并记录窗函数对滤波器幅频特性的影响,比较三种窗的特点;总结窗的不同长度和不同窗对滤波器的影响
4、设计过程
1、第一题
(1)设计思想:
第一题主要的考查点是对连续时间信号的抽样,对抽样信号进行傅里叶变换以及不同采样频率对幅频特性曲线的影响等。
其信号变换图为:
(2)源代码:
a=1000;
T1=0.0002;
N1=50;
n=0:
49;
x1=exp(-a*n*T1);%所给信号
figure;
subplot(3,2,1);stem(x1,'.');%坐标函数及现实函数
xlabel('n');ylabel('x(n)');
title('X1(n)');
y1=fft(x1,N1);%傅立叶变换
subplot(3,2,2);plot(abs(y1));
xlabel('(N=50wk=2pik/N)k');ylabel('|X1(jw)|');
T2=0.001;
N2=50;
n=0:
49
x2=exp(-a*n*T2);
subplot(3,2,3);stem(x2,'.');
xlabel('n');ylabel('x(n)');
title('X2(n)');
y2=fft(x2,N2);
subplot(3,2,4);plot(abs(y2));
xlabel('(N=50wk=2pik/N)k');ylabel('|X2(jw)|');
(3)运行结果
(4)结果分析
发现所得的序列傅里叶变换的图与理论不符,其原因为错把序列傅里叶变换当成离散傅里叶变换,并用fft()去求。
例:
y1=fft(x1,N1);%傅立叶变换
subplot(3,2,2);plot(abs(y1));
xlabel('(N=50wk=2pik/N)k');ylabel('|X1(jw)|');
改正程序(如下)通过定义求得:
t=-0.005:
0.00005:
0.005;
xa=exp(-1000*abs(t));
Ts=0.0002;n=-25:
1:
25;
x=exp(-1000*abs(n*Ts));
K=100;k=0:
1:
K;w=pi*k/K;
X=x*exp(-j*n'*w);X=real(X);
w=[-fliplr(w),w(2:
K+1)];
X=[fliplr(X),X(2:
K+1)];
subplot(1,1,1)
subplot(2,2,1);plot(t*1000,xa)
xlabel('t/毫秒');ylabel('x1(n)');
title('离散信号ts=5000采样');holdon
stem(n*Ts*1000,x);holdoff
subplot(2,2,2);plot(w/pi,X);
xlabel('以w/pi为单位的频率');ylabel('X1(jw)');
title('序列傅里叶变换');
t=-0.005:
0.00005:
0.005;
xa=exp(-1000*abs(t));
Ts=0.001;n=-5:
1:
5;
x=exp(-1000*abs(n*Ts));
K=100;k=0:
1:
K;w=pi*k/K;
X=x*exp(-j*n'*w);X=real(X);
w=[-fliplr(w),w(2:
K+1)];
X=[fliplr(X),X(2:
K+1)];
subplot(2,2,3);plot(t*1000,xa);
xlabel('t/毫秒');ylabel('x2(n)');
title('离散信号ts=1000采样');holdon
stem(n*Ts*1000,x);holdoff
subplot(2,2,4);plot(w/pi,X);
xlabel('以w/pi为单位的频率');ylabel('X2(jw)');
title('序列傅里叶变换');
运行结果
结果分析
由以上实验得到的图形结果可以看到:
,当采样频率越大的时候,采样信号的频谱越陡峭,而其失真情况也越来越小,根据采样定理“采样频率越接近信号频率,其失真情况就越小”可以得到上述结论。
2、第二题
(1)设计思想:
通过差分方程,利用z变换来求出系统函数,最后通过调用freqz函数,来求出幅度响应与频度响应。
(2)源程序
b=[1,1];
a=[1,0];
[z,p,k]=tf2zp(b,a);
disp('零点');disp('z’');
disp('极点');disp('p‘');
disp('增益');disp('k’');
subplot(2,3,1);
zplane(z,p);
grid;
N=512;
[H,w]=freqZ(b,a,N,'whole');
magH=abs(H(1:
N));
phaH=angle(H(1:
N));
w=(1:
N);
subplot(2,3,2);
plot(w/pi,magH);
grid;
ylabel('幅度');title('幅度响应');
grid;
subplot(2,3,3);
plot(w/pi,phaH);
grid;
ylabel('相位');title('相位响应');
b=[1,-1];
a=[1,0];
[z,p,k]=tf2zp(b,a);
disp('零点');disp('z’');
disp('极点');disp('p‘');
disp('增益');disp('k’');
subplot(2,3,4);
zplane(z,p);
grid;
N=512;
[H,w]=freqZ(b,a,N,'whole');
magH=abs(H(1:
N));
phaH=angle(H(1:
N));
w=(1:
N);
subplot(2,3,5);
plot(w/pi,magH);
ylabel('幅度');title('幅度响应');
grid;
subplot(2,3,6);
plot(w/pi,phaH);
ylabel('相位');title('相位响应');
grid;
(3)运行结果
(4)结果分析
由上图,发现幅度响应和相位响应在横轴取值上未进行归一化,但不影响整体趋势的变化。
通过调用[z,p,k]=tf2zp(b,a),我们可以求出第一个图和第四个图中所示的零极点。
发现其零极点分布的不同,会造成幅度响应图形的变化,进而造成滤除波的频率是不同的。
3、第三题
(1)设计思想:
1、通过已调信号,求出抽样信号,最后得到频谱信号与相位信号
2、通过已调信号,乘以载波,然后通过一个巴特沃斯低通滤波器,滤除载波,得到原调制信号。
(2)源代码
t=[0:
0.001:
2];
a=cos(t*pi);
b=cos(9*pi*t);
x=a.*b;
subplot(3,2,1);
plot(t,x);
Ts=1/10;
N=25;
n=0:
N-1;
w=n*2*pi/N;
y=cos(pi*n*Ts).*cos(9*pi*n*Ts);
subplot(3,2,2);
stem(n*Ts,y);
subplot(3,2,3);
y1=fft(y);
y2=abs(y1);
stem(w,abs(y1));
subplot(3,2,4);
stem(w,angle(y1));
figure;
t0=0;tf=5;dt=0.05;t1=1;
t=[t0:
dt:
tf];
x=cos(pi*t).*cos(9*pi*t);%已调信号
subplot(2,1,1);plot(t,x);
y=x.*cos(9*pi*t);%已调信号再乘以载波信号
subplot(2,1,2);plot(t,y);wp=2*pi*(1/2+1/10);ws=2*pi*(1-1/8);Rp=1;As=30;%选定滤波器的参数,并设计模拟低通滤波器
[N,wc]=buttord(wp,ws,Rp,As,'s');
[B,A]=butter(N,wc,'s');
[H,w]=freqs(B,A,127);%滤波器的系统函数
plot(w/(2*pi),abs(H));axis([0,5,0,1]);
wf=40;Nf=64;%求y的频谱
w1=linspace(0,wf,Nf);dw=wf/(Nf-1);
F1=y*exp(-j*t'*w1)*dt;
F=[fliplr(F1),F1(2:
Nf)];w=[-fliplr(w1),w1(2:
Nf)];
subplot(2,2,3);plot(w,abs(F))
Y3=H'.*F;%通过信号的频谱与系统函数相乘进行滤波
subplot(2,2,4);plot(w,abs(Y3));
z=Y3*exp(j*w'*t)/pi*dw;%滤波后的序列
plot(t,z);
(3)运行结果
(4)结果分析
结果分析:
上图中选择f=10hz;利用画图函数stem画出抽样信号(222);调用fft函数求出频谱函数和相位函数,分别显示在(223)/(224).
4、第四题
(1)设计思想:
通过图形表示出三角波序列和反三角波序列,
然后对两个序列求傅里叶变换,即对两序列分别用fft()函数进行8点和16点的FFT变换,对比其频谱图,便可得到结果。
(2)源程序
n=0:
7;
x=zeros(size(n));
mask=(n>=0)&(n<=3);
x1(mask)=n(mask)+1;
x2(mask)=4-n(mask);
mask=(n>=4);
x1(mask)=8-n(mask);
x2(mask)=n(mask)-3;
subplot(2,3,1);
stem(n,x1);
subplot(2,3,2);
N=8;
q=2*pi*n/N;
y1=fft(x1,N);
stem(q,abs(y1));
subplot(2,3,3);
stem(n,x2);
subplot(2,3,4);
y2=fft(x2,N);
stem(q,abs(y2));
grid;
x1=[1234432100000000];
x2=[4321123400000000];
N=16;
n=[0:
N-1];
q=n*pi*2/N;
subplot(2,3,5);
y3=fft(x1,N);
stem(q,abs(y3));
subplot(2,3,6);
y4=fft(x2,N);
stem(q,abs(y4));
(3)运行结果
(4)结果分析
分析:
由N=8时所得到的两幅频谱特性曲线知道,正反三角波序列的频谱图像时一样的。
原因是因为所取的主值序列相同,相差一相位。
而N=16时,由于后面补0,所以周期延拓后的主值序列不相同了,正三角波周期延拓后仍然是连续的,而反三角波周期延拓之后在N=8的地方出现了陡峰,因此频域中的频谱分量会增多。
两图比较可知,末尾补0可以使谱线变密,从而减小栅栏效应。
增加频率采样点数,原来漏掉的某些频谱分量就肯恩被检测出来。
4、第五题
设计思想:
在第五题中,根据
(1)至(4)问中依次需要设计低通、高通、带通、带阻滤波器,而信号x(n)中包含了不同频段的信号,需通过设计所需滤波器时,来设置频段滤除不要的信号,保存所需信号。
其中低通、高通、带通及带阻滤波器的幅度特性图如下:
低通滤波器幅度特性
高通滤波器幅度特性
带通滤波器幅度特性
带阻滤波器幅度特性
根据以上滤波器的幅度特性来设计流程图,
其设计流程图为:
(2)源代码
低通滤波器
wp=0.4*pi;ap=3;
ws=0.5*pi;as=20;
[n,wn]=buttord(wp/pi,ws/pi,ap,as);
[b,a]=butter(n,wn);
figure
(1);
freqz(b,a,1000);
grid;
grid;
t=0:
100;
x=1+cos(t*pi/4)+cos(t*2*pi/3);
y=fft(x);
h=abs(y);
y1=filter(b,a,x);
h1=abs(fft(y1));
w=t*2*pi/100;
figure
(2);
subplot(221);
plot(t,x);
subplot(222);
plot(t,y1);
subplot(223);
plot(w/pi,h);axis([02060]);
grid;
subplot(224);
plot(w/pi,h1);axis([02060]);
grid;
高通滤波器
wp=0.6;ap=3;
ws=0.3;as=20;
[n,wn]=buttord(wp,ws,ap,as);
[b,a]=butter(n,wn,'high');
figure
(1);
freqz(b,a,1000);
grid;
grid;
t=0:
100;
x=1+cos(t*pi/4)+cos(t*2*pi/3);
y=fft(x);
h=abs(y);
y1=filter(b,a,x);
h1=abs(fft(y1));
w=t*2*pi/100;
figure
(2);
subplot(221);
plot(t,x);
subplot(222);
plot(t,y1);
subplot(223);
plot(w/pi,h);axis([02060]);
grid;
subplot(224);
plot(w/pi,h1);axis([02060]);
grid;
带通滤波器
wp=[0.180.38];ap=3;
ws=[0.10.55];as=20;
[n,wn]=buttord(wp,ws,ap,as);
[b,a]=butter(n,wn)
figure
(1);
freqz(b,a,1000);
grid;
grid;
t=0:
100;
x=1+cos(t*pi/4)+cos(t*2*pi/3);
y=fft(x);
h=abs(y);
y1=filter(b,a,x);
h1=abs(fft(y1));
w=t*2*pi/100;
figure
(2);
subplot(221);
plot(t,x);
subplot(222);
plot(t,y1);
subplot(223);
plot(w/pi,h);axis([02060]);
grid;
subplot(224);
plot(w/pi,h1);axis([02060]);
grid;
带阻滤波器
wp=[0.10.69];ap=3;
ws=[0.20.4];as=20;
[n,wn]=buttord(wp,ws,ap,as);
[b,a]=butter(n,wn,'stop');
figure
(1);
freqz(b,a,1000);
grid;
grid;
t=0:
100;
x=1+cos(t*pi/4)+cos(t*2*pi/3);
y=fft(x);
h=abs(y);
y1=filter(b,a,x);
h1=abs(fft(y1));
w=t*2*pi/100;
figure
(2);
subplot(221);
plot(t,x);
subplot(222);
plot(t,y1);
subplot(223);
plot(w/pi,h);axis([02060]);
grid;
subplot(224);
plot(w/pi,h1);axis([02060]);
grid;
(3)运行结果
低通滤波器
高通滤波器
带通滤波器
带阻滤波器
(4)结果分析
通过上面的图形,发现程序所得的幅度响应与设计思想中各个滤波器的幅度响应特性一致,达到了各个滤波器所要求的滤波。
5、第一题
(1)设计思想:
在第六题中涉及到的窗函数(矩形窗、汉宁窗及布莱克曼窗),其原理都是对离散时间信号的截取,并用FFT对其频谱进行分析。
本题中要求设计的线性相位数字带通滤波器的,可利y用fir1函数设计出滤波器,再利用freqz函数得出其频率响应。
而在
(1)中要求比较N=15与N=45时候的幅频和相位特性的变化,则可以通过matlab中一个叠加函数“holdon”叠加在一起,以便更好地观察两个不同采样点时的区别。
同时在
(2)中要求汉宁窗与blackman窗表示,故可以将三种窗通过一个input(),组合在一起,使程序简化。
设计的流程图为:
(2)源代码
clc;
w1=0.3*pi;
w2=0.5*pi;
wn=[w1,w2];
k=input('窗口类型:
1(boxcar)2(hanning)3(blackman):
\n');
ifk==1
N=15;
window1=boxcar(N+1);
b1=fir1(N,wn/pi,window1);
M=45;
window2=boxcar(M+1);
b2=fir1(M,wn/pi,window2);
freqz(b1,1,512)
holdon;
freqz(b2,1,512)
elseifk==2
N=15;
window1=hanning(N+1);
b1=fir1(N,wn/pi,window1);
M=45;
window2=hanning(M+1);
b2=fir1(M,wn/pi,window2);
freqz(b1,1,512)
holdon;
freqz(b2,1,512)
elseifk==3
N=15;
window1=blackman(N+1);
b1=fir1(N,wn/pi,window1);
M=45;
window2=blackman(M+1);
b2=fir1(M,wn/pi,window2);
freqz(b1,1,512)
holdon;
freqz(b2,1,512)
end
end
End
(3)运行结果
矩形窗
汉宁窗
布莱克曼窗
(3)结果分析
矩形窗
通过对矩形窗图的观察,我们可以得出,当加了矩形窗之后,在幅频特性上,随着N的增大,主瓣宽度变窄,主瓣幅度和旁瓣幅度增大。
在相频特性上,相位发生变化,但N越大,变化的幅度越小。
汉宁窗
通过对汉宁窗图的观察,在幅频特性上,N小时,其主瓣与旁瓣的宽度比较大,旁瓣的幅度值也较大。
在相频特性上,相位发生变化,但N越大,变化的幅度越小。
布莱克曼窗
通过对布莱克曼窗图的观察,随着N的增大,在幅频特性上,主瓣宽度变窄,主瓣幅