现代信号处理课设报告.docx
《现代信号处理课设报告.docx》由会员分享,可在线阅读,更多相关《现代信号处理课设报告.docx(29页珍藏版)》请在冰豆网上搜索。
现代信号处理课设报告
中南大学
现代信号处理课程设计报告
姓名:
学号:
学院:
专业班级:
指导老师:
1、摘要及关键字······························1
2、课程设计目的······························1
3、课程设计具体要求··························1
4、具体题目分析及数据测试(题目及要求、程序源代码、
题目分析)···································2
5、总结······································35
一、摘要及关键字
摘要:
数字信号处理是通信工程专业相当重要的学科,对日后就业和科研有重大的意义,通过MATLAB,我们可以清晰的理解数字信号处理中难以理解的一面,对理论知识加以深化。
关键字:
MATLAB数字信号处理频谱分析调制解调滤波器设计二、课程设计目的
课程设计是教学的最后一个步骤,课程设计有利于基础知识的理解。
数字信号课程设计是在我们学习完数字信号处理的相关理论后的一次综合性训练,其主要目的如下:
1.全面复习课程所学理论知识,巩固所学知识重点和难点,将理论与实践很好地结合起来。
2.掌握信号分析与处理的基本方法与实现
3.提高综合运用所学知识独立分析和解决问题的能力;
4.熟练使用一种高级语言进行编程实现
三、课程设计具体要求
1、要求使用matlab编程完成实现以下题目中的各种要求(1至6题必选,7、8题选做),写出课程设计报告。
滤波器设计题目应尽量避免使用现成的工具箱函数。
为便于分析与观察,设计中所有频谱现实中的频率参数均应对折叠频率归一化。
2、课程设计报告的内容包括:
(1)课程设计题目和题目设计要求;
(2)设计思想和系统功能分析;
(3)设计中关键部分的理论分析与计算,关键模块的设计思路;
(4)测试数据、测试输出结果及必要的理论分析和比较;
(5)总结,包括设计过程中遇到的问题和解决方法、设计心得与体会等;
(6)程序源代码
我做的题目是1至6题,实现了基本要求,并没有设计界面。
四、具体题目分析及数据测试(题目及要求、程序源代码、题目分析)
第一题(连续模拟信号的采样)
(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)分析
严格说,在matlab中不使用symbolic工具箱是不能分析模拟信号的,但是当采样时间间隔充分小的时候,可产生平滑的图形,当时间足够长,可显示出所有的模型,也就是可以近似的分析。
此题中,xa(t)为fh=2000Hz的带限信号,因此取
即源代码中的Dt。
完成抽样后,套用公式可以实现序列傅里叶变换,由于w是连续变量,无法直接计算,因此可以利用语句K=500;k=0:
1:
K;w=pi*k/K,将w用抽样间隔很短的序列近似表示。
最后调用stem和plot函数分别画出两种频率抽样下的离散函数和序列傅里叶函数。
然后通过离散图和连续图的对比观察不同采样频率下的失真情况。
(2)源代码
clc%清屏
Dt=0.00005;t=-0.005:
Dt:
0.005;%取充分小的采样时间间隔,绘制近似的模拟信号
xa=exp(-1000*abs(t));
Ts1=0.0002;Fs1=1/Ts1;n1=-25:
1:
25;nTs1=n1*Ts1;%采样频率为5000Hz,采样周期为1/Fs
Ts2=0.001;Fs2=1/Ts2;n2=-25:
1:
25;nTs2=n2*Ts2;%采样频率为1000Hz,采样周期为1/Fs
x1=exp(-1000*abs(nTs1));%离散时间信号
x2=exp(-1000*abs(nTs2));
K=500;k=0:
1:
K;w=pi*k/K;%离散时间傅里叶变换
Wmax=2*pi*2000;W=k*Wmax/K;
Xa=xa*exp(-j*t'*W)*Dt;
X1=x1*exp(-j*n1'*w);
X2=x2*exp(-j*n2'*w);
w=[-fliplr(w),w(2:
501)];%fliplr函数实现矩阵的左右翻转,fliplr(X)使矩阵X沿垂直轴左右翻转。
W=[-fliplr(W),W(2:
501)];
Xa=[fliplr(Xa),Xa(2:
501)];
X1=[fliplr(X1),X1(2:
501)];
X2=[fliplr(X2),X2(2:
501)];
figure
(1)
subplot(2,1,1);plot(t*1000,xa,'.');xlabel('tinmsec');ylabel('xa1(t)');
gtext('模拟信号');
subplot(2,1,2);plot(W/(2*pi*1000),Xa*1000,'.');xlabel('frequenceinKHz');ylabel('Xa(ejw)*1000');
gtext('连续时间傅里叶变换');
figure
(2)
subplot(2,1,1);stem(n1*Ts1*1000,x1);ylabel('x1(n)');
gtext('离散信号');
subplot(2,1,2);plot(w/pi,abs(X1),'.');ylabel('X1(ejw)');
gtext('离散时间傅里叶变换');gtext('Ts=0.2msec');
figure(3)
subplot(2,1,1);stem(n2*Ts2*1000,x2);ylabel('x2(n)');
gtext('离散信号');;
subplot(2,1,2);plot(w/pi,abs(X2),'.');ylabel('X2(ejw)');
gtext('离散时间傅里叶变换');gtext('Ts=0.1msec');
(3)执行结果
(1)
(2)
(3)
(4)结果分析
有三个图可以看出,当fs=5000Hz时(即抽样频率大于信号最高频率的两倍),图
(2)中的X1(ejw)与图
(1)中的Xa(ejw)完全一致,没有发生混叠现象;而当fs=1000Hz时(即抽样频率大于信号最高频率的两倍),X2(ejw)与图
(1)中的Xa(ejw)不同,产生了混叠现象
第二题
(1)题目
2.已知两系统分别用下面差分方程描述:
试分别写出它们的传输函数,并分别打印
曲线。
说明这两个系统的区别。
(2)分析
该题要求有一只系统的差分方程画出系统的幅频特性,利用freqz函数(其中b为系统函数分子多项式系数,a为分母多项式系数)便可得出系统的幅频和相频特性。
(3)源代码
a=[1];
b1=[1,1];
b2=[1,-1];
[y1,w]=freqz(b1,a,256,2);
[y2,w]=freqz(b2,a,256,2);
figure;
subplot(2,1,1);
plot(w,abs(y1));
title('y1(n)的幅频曲线');
xlabel('频率(Hz)');
ylabel('幅度');
subplot(2,1,2);
plot(w,abs(y2));
title('y2(n)的幅频曲线');
xlabel('频率(Hz)');
ylabel('幅度');
(4)运算结果
(4)结果分析
对比两个图很容易两系统传输函数图形轮廓相同,通过平移可以重合,但从滤波角度来说,他们的通频带与阻带恰好是对应相反地(即系统一的阻带是系统二的通带),也可以说系统一为低通,系统二为高通。
第三题
(1)题目
3.已知已调信号
,其中调制信号
,载波为
。
1)选择合适的采样频率及信号长度,使用FFT分析该已调信号的频谱并画出其幅频特性和相频特性曲线图
2)对该已调信号进行解调,恢复原调制信号。
(2)分析
该题目有两个要求:
一是实现信号的FFT,这个利用matlab中现成的FFT函数实现即可;二是实现信号的解调,其原理及方法是将已调信号再乘以调制信号,在频域中实现频谱搬移,再通过一个低通滤波器便可恢复原信号。
在此题中,我用巴特沃斯低通滤波器和filter来实现低通滤波。
利用和差化积,将原已调信号变换为0.5*cos(8*pi*t)和0.5*cos(10*pi*t),则抽样频率可取值为20。
x(t)乘上调制信号后,相当于频域中发生了相应的搬移,滤去高频便是原来的cos(pi*t)信号。
(3)源代码
N=256;
n=0:
N-1;
fs=20;
t=n/fs;
x1=cos(pi*t).*cos(9*pi*t);
y1=fft(x1,N);
figure;
subplot(321);
plot(t,x1);
title('已调信号的时域特性');
xlabel('时间:
单位:
s');
ylabel('幅度');
Y1=2*pi/N*abs(fftshift(y1));%fftshift的作用正是让正半轴部分和负半轴部分的图像分别关于各自的中心对称,直接用fft得出的数据与频率不是对应的
Fw=[-N/2:
N/2-1]/N*2;
subplot(323);
plot(Fw,Y1);
title('已调信号的频域特性');
xlabel('频率(HZ)');
ylabel('幅度');
subplot(325);
plot(Fw,angle(y1));
title('已调信号的相频');
xlabel('频率(HZ)');
ylabel('X1(k)');
x2=x1.*cos(9*pi*t);
[n,Wn]=buttord(0.1,0.25,0.1,30);
[b,a]=butter(n,Wn);
x3=filter(b,a,x2);
subplot(322);
plot(t,x3);
title('调制信号的时域特性');
xlabel('时间:
单位:
s');
ylabel('幅度');
y3=fft(x3,N);
Y3=2*pi/N*abs(fftshift(y3));
Fw=[-N/2:
N/2-1]/N*2;
subplot(324);
plot(Fw,Y3);
title('调制信号的频域特性');
xlabel('频率:
单位Hz');
ylabel('幅度');
subplot(326);
plot(Fw,angle(y3));
title('调制信号的相频');
xlabel('频率:
单位Hz');
ylabel('幅度');
(3)运行结果
(4)结果分析
通过观察可以看出所得信号相比理论的原始信号存在延时,分析可知解调过程中通过了一个低通滤波器,且编程过程中改变N的值,N越大,截止频率越接近pi*t,即滤波器越理想,恢复信号效果越好。
第四题
(1)题目
4.已知三角波序列
和反三角波序列
:
用N=8点FFT分析序列x1(n)和x2(n)的幅频特性,观察两者的序列形状和频谱特性曲线有什么异同?
绘出两序列及其幅频特性曲线。
在x1(n)和x2(n)的末尾补零,用N=16点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?
两情况的FFT频谱还有相同之处吗?
这些变化说明了什么?
(2)分析
先将抽象的x(n)转化成简单易懂的序列表示形式(例如x1=[1,2,3,4,4,3,2,1]),在调用fft函数计算N点FFT,绘制函数离散图和幅频特性图,对比分析即可。
(3)源代码
clf;
x1=[1,2,3,4,4,3,2,1];
nf1=0;
ne1=nf1+length(x1)-1;
x2=[4,3,2,1,1,2,3,4];
nf2=0;
ne2=nf2+length(x2)-1;
subplot(3,2,1);
stem(nf1:
ne1,x1);grid;
xlabel('n');ylabel('x1(n)');
title('x1(n)序列');
subplot(3,2,2);
stem(nf2:
ne2,x2);grid;
xlabel('n');ylabel('x2(n)');
title('x2(n)序列');
subplot(3,2,3);
stem(abs(fft(x1,8)));grid;
xlabel('n');title('x1(n)N=8时的频谱特性');
subplot(3,2,4);
stem(abs(fft(x2,8)));grid;
xlabel('n');title('x2(n)N=8时的频谱特性');
y1=[x1,zeros(1,15-ne1)];
nf3=0;
ne3=nf3+length(y1)-1;
y2=[x2,zeros(1,15-ne2)];
nf4=0
ne4=nf4+length(x2)-1;
subplot(3,2,5);
stem(abs(fft(y1,16)));grid;
xlabel('n');title('x1(n)N=16时的频谱特性');
subplot(3,2,6);
stem(abs(fft(y2,16)));grid;
xlabel('n');title('x2(n)N=16时的频谱特性')
(3)运行结果
(4)结果分析
由图可以看出,反三角波序列是正三角波序列以八点为循环卷积后所得图形,由循环卷积定理可知,两者的频谱特性一致。
补零之后,两者的幅频特性不完全相同。
由于补零运算,十六点幅频特性与八点相比,增加了频率分量,提供了较密集的频谱和较好的图示形式。
两情况下的FFT在原频率点上的值是相同的。
第五题
(1)题目
5.设有一信号
,设计各种IIR数字滤波器以实现:
1)低通滤波器,滤除
的成分,保留成分
2)高通滤波器,滤除
的成分,保留成分
3)带通滤波器,滤除
的成分,保留成分
4)带阻滤波器,滤除
的成分,保留成分
要求:
1)求出各个滤波器的阶数,设计各滤波器。
画出各滤波器的幅频和相频特性,计算滤波器的系统函数H(z)
2)画出滤波前后信号的时域、频域波形
(2)分析
设计滤波器,关键是选好wp,ws,最好留有一定余量,这样滤波效果更好。
确定好参数后,由buttord求出系统阶数和滤波器截止频率。
得到阶数N和截止频率wn后,就可以利用butter等函数去设计滤波器。
(3)源代码
wp=1/4;;ws=2/3;
ap=1;as=60;
[n,wc]=buttord(wp,ws,ap,as);
[b,a]=butter(n,wc);
[h,w]=freqz(b,a);
subplot(3,2,1);
plot(w/pi,abs(h))
title('数字低通滤波器的频率特性')
xlabel('w/pi')
ylabel('|Hw|')
grid;
subplot(3,2,2);
plot(w/pi,angle(h))
title('数字低通滤波器的相频特性')
xlabel('w/pi')
ylabel('ang(h)')
grid;
N=32;
n=0:
N-1;
xn=1+cos(pi*n/4)+cos(2*pi*n/3);
subplot(3,2,3);
stem(n,xn,'k.')
Title('滤波前的时域信号')
xlabel('n')
ylabel('x(n)')
grid;
w=0:
pi/100:
pi;
Xw=xn*exp(-j*n'*w);
subplot(3,2,4);
plot(w/pi,abs(Xw),'k')
title('滤波前的频域特性')
xlabel('w/pi')
ylabel('|Xw|')
grid;
yn=filter(b,a,xn);
subplot(3,2,5);
stem(n,yn,'k.')
title('滤波后的时域信号')
xlabel('n')
ylabel('y(n)')
grid;
Yw=yn*exp(-j*n'*w);
subplot(3,2,6);
plot(w/pi,abs(Yw),'k')
title('滤波后的频域特性')
xlabel('w/pi')
ylabel('|Yw|')
grid;
wp=2/3;ws=1/4;
ap=1;as=60;
[n,wc]=buttord(wp,ws,ap,as);
[b,a]=butter(n,wc,'high');
[h,w]=freqz(b,a);
subplot(3,2,1);
plot(w/pi,abs(h))
title('数字高通滤波器的频率特性')
xlabel('w/pi')
ylabel('|Hw|')
grid;
subplot(3,2,2);
plot(w/pi,angle(h))
title('数字高通滤波器的相频特性')
xlabel('w/pi')
ylabel('ang(h)')
grid;
N=32;
n=0:
N-1;
xn=1+cos(pi*n/4)+cos(2*pi*n/3);
subplot(3,2,3);
stem(n,xn,'k.')
title('滤波前的时域信号')
xlabel('n')
ylabel('x(n)')
grid;
w=0:
pi/100:
pi;
Xw=xn*exp(-j*n'*w);
subplot(3,2,4);
plot(w/pi,abs(Xw),'k')
title('滤波前的频域特性')
xlabel('w/pi')
ylabel('|Xw|')
grid;
yn=filter(b,a,xn);
subplot(3,2,5);
stem(n,yn,'k.')
title('滤波后的时域信号')
xlabel('n')
ylabel('y(n)')
grid;
Yw=yn*exp(-j*n'*w);
subplot(3,2,6);
plot(w/pi,abs(Yw),'k')
title('滤波后的频域特性')
xlabel('w/pi')
ylabel('|Yw|')
grid;
wp1=1/6;wp2=3/10;
ws1=1/10;ws2=1/2;
wp=[wp1,wp2];
ws=[ws1,ws2];
ap=1;as=60;
[n,wn]=buttord(wp,ws,ap,as);
[b,a]=butter(n,wn);
[h,w]=freqz(b,a);
subplot(3,2,1);
plot(w/pi,abs(h))
axis([0,1,0,1]);
title('数字带通滤波器的频率特性')
xlabel('w/pi')
ylabel('|Hw|')
grid;
subplot(3,2,2);
plot(w/pi,angle(h))
title('数字带通滤波器的相频特性')
xlabel('w/pi')
ylabel('ang(h)')
grid;
N=32;
n=0:
N-1;
xn=1+cos(pi*n/4)+cos(2*pi*n/3);
subplot(3,2,3);
stem(n,xn,'k.')
title('滤波前的时域信号')
xlabel('n')
ylabel('x(n)')
grid;
w=0:
pi/100:
pi;
Xw=xn*exp(-j*n'*w);
subplot(3,2,4);
plot(w/pi,abs(Xw),'k')
title('滤波前的频域特性')
xlabel('w/pi')
ylabel('|Xw|')
grid;
yn=filter(b,a,xn);
subplot(3,2,5);
stem(n,yn,'k.')
title('滤波后的时域信号')
xlabel('n')
ylabel('y(n)')
grid;
Yw=yn*exp(-j*n'*w);
subplot(3,2,6);
plot(w/pi,abs(Yw),'k')
title('滤波后的频域特性')
xlabel('w/pi')
ylabel('|Yw|')
grid;
wp1=1/10;wp2=1/2;
ws1=1/6;ws2=3/10;
wp=[wp1,wp2];
ws=[ws1,ws2];
ap=1;as=60;
[n,wn]=buttord(wp,ws,ap,as);
[b,a]=butter(n,wn,'stop');
[h,w]=freqz(b,a);
subplot(3,2,1);
plot(w/pi,abs(h))
axis([0,1,0,1]);
title('数字带阻滤波器的频率特性')
xlabel('w/pi')
ylabel('|Hw|')
grid;
subplot(3,2,2);
plot(w/pi,angle(h))
title('数字带阻滤波器的相频特性')
xlabel('w/pi')
ylabel('arg(h)')
grid;
N=32;
n=0:
N-1;
xn=1+cos(pi*n/4)+cos(2*pi*n/3);
subplot(3,2,3);
stem(n,xn,'k.')
title('滤波前的时域信号')
xlabel('n')
ylabel('x(n)')
grid;
w=0:
pi/100:
pi;
Xw=xn*exp(-j*n'*w);
subplot(3,2,4);
plot(w/pi,abs(Xw),'k')
title('滤波前的频域特性')
xlabel('w/pi')
ylabel('|Xw|')
grid;
yn=filter(b,a,xn);
subplot(3,2,5);
stem(n,yn,'k.')
title('滤波后的时域信号')
xlabel('n')
ylabel('y(n)')
grid;
Yw=yn*exp(-j*n'*w);
subplot(3,2,6);
plot(w/pi,abs(Yw),'k')
title('滤波后的频域特性')
xlabel('w/pi')
ylabel('|Yw|')
grid;
(2)运行结果
第六题
(1)题目
6.
(1)用Hanning窗设计一线性相位带通数字滤波器,要求:
N=15,
。
观察它的实际3dB和20dB带宽。