课 程 设 计 报 告
课程名称: 数字信号处理A
班 级: 电子 131
姓 名: XXXX
学 号: XXXXXX
指导教师: XXXXX
时 间: 2016年1月1日
一、课程设计题目
题目1:
(1)、已知Xa(t)=e^-1000|t|,求其傅立叶变换Xa(jΩ) ,画出模拟信号及其连续时间傅里叶变换的曲线图。
(2)、以Xa(t)为例,说明采样频率对频率响应的影响,分别采用fs=1000Hz和fs=5000Hz,绘出X(e^jw)曲线。
(1)
代码:
close all
clear;clc;
W=10;f=1000;n=-10:W-1;t=n/f;
X=exp(-1000*abs(t));
subplot(1,2,1);plot(t,X); %画模拟信号曲线
xlabel('t/s');ylabel('xa(n)');
title('模拟信号'); %标题模拟信号
tf=10;N=100;dt=10/N;t=(1:N)*dt;
wf=25;Nf=50;
w1=linspace(0,wf,Nf); %0-25之间分成50点
dw=wf/(Nf-1); W1=-50:50;
1
Xat=exp(-1000*abs(t)); %表达式
F1=Xat*exp(-1i*t'*w1)*dt; %傅立叶变换
w=[-fliplr(w1),w1(2:Nf)]; %负频率的频谱
Y1=(exp(2)-1)./(exp(2)-exp(1-1i*W1)-exp(1+1i*W1)+1);
F=[fliplr(F1),F1(2:Nf)];t=[-fliplr(t),t];
subplot(1,2,2);
plot(w,F,'linewidth',1); %画傅立叶变换曲线
xlabel('w/pi');ylabel('Xa(jΩ)');
title('傅里叶变换'); %标题傅立叶变换
结果:
2
模拟信号1430.82x 10-45傅里叶变换Xa(jΩ)0t/s0.0050.010.6xa(n)10-10.40.2-20-0.01-0.005-3-40-200w/pi2040
分析:模拟信号在[-0.01,0.01]区间为连续信号,其傅立叶变换曲线在[-10,10]内为连续曲线。
(2)代码:
close all
clear
clc
Dt=0.00005; %步长为0.00005s
t=-0.005:Dt:0.005;
xa=exp(-1000*abs(t)); %取时间从-0.005s到0.005s这段模拟信号
3
Ts1=0.001;Ts2=0.0002; %周期
n=-25:1:25;
x1=exp(-1000*abs(n*Ts1));
x2=exp(-1000*abs(n*Ts2));
K=100;k=0:1:K;w=pi*k/K; %求模拟角频率
X1=x1*exp(-j*n'*w); %求其傅立叶变换
X2=x2*exp(-j*n'*w); %求其傅立叶变换
X11=real(X1);X12=real(X2);
w=[-fliplr(w),w(2:101)]; %将角频率范围扩展为从-到+
X11=[fliplr(X11),X11(2:101)];
X12=[fliplr(X12),X12(2:101)];
subplot(2,1,1);plot(w/pi,X11);%画出fs=1000Hz的频率响应
xlabel('w/pi');ylabel('X1(jw)');
4
title('fs=1000Hz的DTFT'); %标题fs=1000Hz的DTFT
subplot(2,1,2);plot(w/pi,X12);%画出fs=5000Hz的频率响应
xlabel('w/pi');ylabel('X2(jw)');
title('fs=5000Hz的DTFT'); %标题fs=5000Hz的DTFT
结果:
fs=1000Hz的DTFT3X1(jw)210-1-0.8-0.6-0.4-0.200.2w/pifs=5000Hz的DTFT0.40.60.8110X2(jw)50-1-0.8-0.6-0.4-0.20w/pi0.20.40.60.81
分析:
当采样频率越大的时候,采样信号频谱越陡峭,而其失真情况也越来越小。
题目2:
5
已知时域信号 x(n) = cos(0.48πn) + cos(0.52πn),求 下 面 5 种情况的 X (e jω )和X (k ) 。
(1)取 x(n)的前 10 点数据,求 N = 10 点的 X (e jω )和 X (k ) ,并作图。
(2)将(1)中的 x(n)补零至 100点,求 N = 100 点的 X (e jω )和 X (k ) ,并作图。
(3)取 x(n)的前 100 点数据,求 N = 100 点的 X (e jω )和 X (k ) ,并作图。
(4)取 x(n)的前 128 点数据,求 N = 128 点的 X (e jω )和 X (k ) ,并作图。
(5)取 x(n)的前 50 点数据,求 N = 50 点的 X (e jω )和 X (k ) ,并作图。
讨论以上 5 种情况的区别。
(1) 代码:
close all
clear
clc
n=(0:1:9);
6
y=cos(0.48*pi*n)+cos(0.52*pi*n);
n1=(0:1:9);x=y(1:1:10);
subplot(3,1,1);
stem(n1,x); %画出x(n)曲线
title('x(n) (0<=n<=9)'); %标题0<=n<=9)
xlabel('n');ylabel('x(n)');
axis([0,10,-2.5,2.5]); %axis([xmin xmax ymin ymax])
w=linspace(0,2*pi,length(x)); %0-2*pi区域分为10点
xw=x*exp(-j*[1:length(x)]'*w);
magx=abs(xw); %对xw取绝对值
subplot(3,1,2);
plot(w,magx); %画出x(jw)曲线
title('DTFT'); %标题DTFT
7
xlabel('w');ylabel('x(jw)');
axis([0,2*pi,0,10]); %axis([xmin xmax ymin ymax])
subplot(3,1,3);
x1=fft(x); magx1=abs(x1); stem(n1,abs(magx1)); title('DFT'); xlabel('k');ylabel('x(k)');
axis([0,10,0,10]); 结果:
%对x进行傅立叶变换
%对x1取绝对值
%画出x(k)曲线
%标题DFT
%axis([xmin xmax ymin ymax])
8
x(n) (0<=n<=9)2x(n)0-2012345nDTFT67891010x(jw)500123wDFT45610x(k)50012345k678910
分析:
由图可见,由于截断函数的频谱混叠作用,X(K)不能正确分辨w1=0.48*pi,w2=0.52*pi这两个频率分量。
(2) 代码:
close all
clear
clc
n=(0:1:9);
9
y=cos(0.48*pi*n)+cos(0.52*pi*n);
n1=(0:1:99);
x=[y(1:1:10),zeros(1,90)]; %第10位到100位的数据都为0
subplot(3,1,1);
stem(n1,x); %画出x(n)曲线
title('x(n) (0<=n<=9+90zeros)'); %标题0<=n<=9+90zeros)
xlabel('n');ylabel('x(n)');
axis([0,100,-2.5,2.5]); %axis([xmin xmax ymin ymax])
w=linspace(0,2*pi,length(x)); %0-2*pi区域分为100点
xw=x*exp(-j*[1:length(x)]'*w);
magx=abs(xw); %对xw取绝对值
subplot(3,1,2);
plot(w,magx); %画出x(jw)曲线
10
title('DTFT'); %标题DTFT
xlabel('w');ylabel('x(jw)');
axis([0,2*pi,0,10]); %axis([xmin xmax ymin ymax])
subplot(3,1,3);
x1=fft(x); magx1=abs(x1); stem(n1,abs(magx1)); title('DFT'); xlabel('k');ylabel('x(k)');
axis([0,100,0,10]); 结果:
%对x进行傅立叶变换
%对x1取绝对值
%画出x(k)曲线
%标题DFT
%axis([xmin xmax ymin ymax])
11
x(n) (0<=n<=9+90zeros)2x(n)0-201020304050nDTFT6070809010010x(jw)500123wDFT45610x(k)5001020304050k60708090100
分析:
由图可见,虽然x(n)补零至100点,X(K)的密度,截断函数的频谱混叠作用没有改变,这时的物理分辨率使X(K)仍不能正确分辨w1=0.48*pi,w2=0.52*pi这两个频率分量。
(3)
代码:
close all
clear
clc
12
n=(0:1:99);
y=cos(0.48*pi*n)+cos(0.52*pi*n);
n1=(0:1:99);x=y(1:1:100);
subplot(3,1,1);
stem(n1,x); title('x(n) (0<=n<=99)'); xlabel('n');ylabel('x(n)');
axis([0,100,-2.5,2.5]); w=linspace(0,2*pi,length(x)); xw=x*exp(-j*[1:length(x)]'*w); magx=abs(xw); subplot(3,1,2);
plot(w,magx); %画出x(n)曲线
%标题0<=n<=99)
%axis([xmin xmax ymin ymax])
%0-2*pi区域分为100点
%对xw取绝对值
%画出x(jw)曲线
13
title('DTFT'); %标题DTFT
xlabel('w');ylabel('x(jw)');
axis([0,2*pi,0,54]); %axis([xmin xmax ymin ymax])
subplot(3,1,3);
x1=fft(x); magx1=abs(x1); stem(n1,abs(magx1)); title('DFT'); xlabel('k');ylabel('x(k)');
axis([0,100,0,54]); 结果:
%对x进行傅立叶变换
%对x1取绝对值
%画出x(k)曲线
%标题DFT
%axis([xmin xmax ymin ymax])
14
x(n) (0<=n<=99)2x(n)0-201020304050nDTFT6070809010050x(jw)00123wDFT45650x(k)001020304050k60708090100
分析:
由图可见,截断函数的加宽且为周期序列的整数倍,改变了频谱混叠作用,提高了“物理”分辨率使X(K)能正确分辨w1=0.48*pi,w2=0.52*pi这两个频率分量。
(4)
代码:
close all
clear
clc
15
n=(0:1:127);
y=cos(0.48*pi*n)+cos(0.52*pi*n);
n1=(0:1:127);x=y(1:1:128);
subplot(3,1,1);
stem(n1,x); title('x(n) (0<=n<=127)'); xlabel('n');ylabel('x(n)');
axis([0,128,-2.5,2.5]); w=linspace(0,2*pi,length(x)); xw=x*exp(-j*[1:length(x)]'*w); magx=abs(xw); subplot(3,1,2);
plot(w,magx); %画出x(n)曲线
%标题0<=n<=127)
%axis([xmin xmax ymin ymax])
%0-2*pi区域分为128点
%对xw取绝对值
%画出x(jw)曲线
16
title('DTFT'); %标题DTFT
xlabel('w');ylabel('x(jw)');
axis([0,2*pi,0,65]); %axis([xmin xmax ymin ymax])
subplot(3,1,3);
x1=fft(x); magx1=abs(x1); stem(n1,abs(magx1)); title('DFT'); xlabel('k');ylabel('x(k)');
axis([0,128,0,65]); 结果:
%对x进行傅立叶变换
%对x1取绝对值
%画出x(k)曲线
%标题DFT
%axis([xmin xmax ymin ymax])17
x(n) (0<=n<=127)2x(n)0-20204060nDTFT80100120x(jw)5000123wDFT456x(k)5000204060k80100120
分析:
由图可见,截断函数虽进一步加宽,但不是周期序列的整数倍,所以尽管 X(K)能正确分辨w1=0.48*pi,w2=0.52*pi这两个频率分量,但还是呈现除了频谱泄露。
(5)
代码:
close all
clear clc
n=(0:1:49);
18
y=cos(0.48*pi*n)+cos(0.52*pi*n);
n1=(0:1:49); x=y(1:1:50);
subplot(3,1,1);stem(n1,x); %画出x(n)曲线
title('x(n) (0<=n<=49)'); %标题0<=n<=49)
xlabel('n');ylabel('x(n)');
axis([0,50,-2.5,2.5]); %axis([xmin xmax ymin ymax])
w=linspace(0,2*pi,length(x)); %0-2*pi区域分为50点
xw=x*exp(-j*[1:length(x)]'*w);
magx=abs(xw); %对xw取绝对值
subplot(3,1,2);plot(w,magx); %画出x(jw)曲线
title('DTFT'); %标题DTFT
xlabel('w');ylabel('x(jw)');
axis([0,2*pi,0,30]); %axis([xmin xmax ymin ymax])
19
subplot(3,1,3);
x1=fft(x); %对x进行傅立叶变换
magx1=abs(x1); %对x1取绝对值
stem(n1,abs(magx1)); %画出x(k)曲线
title('DFT'); %标题DFT
xlabel('k');ylabel('x(k)');
axis([0,50,0,30]); %axis([xmin xmax ymin ymax])
结果:
x(n) (0<=n<=49)2x(n)0-20510152025nDTFT303540455030x(jw)201000123wDFT45630x(k)201000510152025k3035404550
20
分析:
由图可见,截断函数的宽度正好为序列的周期,即这时的“物理”分辨率使X(K)正好能正确分辨w1=0.48*pi,w2=0.52*pi这两个频率分量。
题目3:
利用MATLAB编程设计一个数字带通滤波器,指标要求如下: 通带边缘频率:wp10.45,wp20.65,通带峰值起伏:p1[dB] 阻带边缘频率:ws10.3,ws20.75最小阻带衰减:s40[dB]
分别用IIR和FIR两种数字滤波器类型进行设计。
实验要求:给出IIR数字滤波器参数和FIR数字滤波器的冲激响应,绘出它们的幅度和相位频响曲线,讨论它们各自的实现形式和特点。
(1)
代码:
close all
clear
21
clc
ws=[0.3,0.75];
wp=[0.45,0.65];
Rp=1;Rs=40;
[N,wc]=buttord(wp,ws,Rp,Rs); %求阶数N及频率参数wc
[B,A]=butter(N,wc); %设计巴特沃斯滤带通波器
[H,w]=freqz(B,A); %求频响
subplot(2,1,1);
plot(w/pi,abs(H)); %画幅频曲线
title('IIR幅度频响曲线'); %标题IIR幅度频响曲线
xlabel('w/pi');
ylabel('幅度');
subplot(2,1,2);
22
plot(w/pi,angle(H)); %画相频曲线
title('IIR相位频响曲线'); %标题IIR相位频响曲线
xlabel('w/pi');
ylabel('相位');
IIR数字滤波器参数:
N = 7
wc = 0.4284 0.6693
B = 0.0003 0 -0.0019 0 0.0057 0 -0.0095
0 0.0095 0 -0.0057 0 0.0019 0
-0.0003
A =1.0000 1.7451 4.9282 6.1195 9.8134 9.2245 10.4323 7.5154 6.4091 3.4595 2.2601 0.8470 0.4167 0.0856 0.0299
IIR幅度和相位频响曲线:
23
IIR幅度频响曲线1.51幅度0.5000.10.20.30.50.6w/piIIR相位频响曲线0.40.70.80.9142相位0-2-400.10.20.30.40.5w/pi0.60.70.80.91
(2)
FIR设计:
由于s40[dB],查表可选hamming窗,其阻带最小衰减-53dB满足要求。
代码:
close all
clear
clc
24
ws1=0.3*pi;ws2=0.75*pi;
wp1=0.45*pi;wp2=0.65*pi;
wb=(wp1-ws1+ws2-wp2)/2; %计算过渡带宽
wc=[wp1/pi-(wp1-ws1)/(2*pi); %设置理想带通截止频率
wp2/pi+(ws2-wp2)/(2*pi)];
N=ceil(3.3*2*pi/wb); %计算窗口长度
b=fir1(N,wc); %设计滤波器系数
n=0:N;
hn=b(n+1); %求冲激响应
[H,w]=freqz(b,1); %求频率响应
subplot(2,1,1);
plot(w/pi,abs(H)); %画幅频曲线
title('FIR幅度频响曲线'); %标题FIR幅度频响曲线
25
xlabel('w/pi');ylabel('幅度');
subplot(2,1,2);
plot(w/pi,angle(H)); %画相频曲线
title('FIR相位频响曲线'); %标题FIR相位频响曲线
xlabel('w/pi');ylabel('相位');
冲激响应hn =b(n+1):
0.0011 0.0005 0.0001 0.0006 -0.0031 -0.0002
-0.0002 -0.0016 -0.0109 0.0087 0.0149 -0.0119
-0.0145 0.0463 0.0118 -0.0445 0.0003 0.1591
-0.1126 -0.2397 0.2135 0.2135 -0.2397 0.0250
-0.0340 0.0003 -0.0445 0.0118 0.0463 -0.0018
26
-0.0008 -0.0098 -0.0340 -0.1126 -0.0145 0.0051 -0.0018 0.0250 0.1591 -0.0119
-0.0098 0.0149 0.0087 -0.0109 -0.0016 -0.0002 -0.0002 0.0051
-0.0008 -0.0031 0.0006 0.0001 0.0005 0.0011
FIR幅度和相位频响曲线:
FIR幅度频响曲线1.51幅度0.5000.10.20.30.50.6w/piFIR相位频响曲线0.40.70.80.9142相位0-2-400.10.20.30.40.5w/pi0.60.70.80.91
分析IIR与FIR的实现形式与特点:
1、IIR滤波器阶数比FIR少。
IIR滤波器存在着输出对输入的反馈,因此可以用比FIR滤波器少的阶数来满足技术指标。
27
2、FIR滤波器可得到严格的线性相位,而IIR滤波器则做不到这一点。
IIR滤波器的选频特性越好,则相位的非线性就越严重,在需要严格线性相位的情况下应该选择FIR滤波器。
3、IIR滤波器必须采用递归结构实现,FIR滤波器主要采用非递归结构。
IIR滤波器必须采用递归结构实现,只有当所有极点都在单位圆内时滤波器才是稳定的。但实际中由于存在有限字长效应,滤波器有可能变得不稳定。而FIR滤波器主要采用非递归结构,因而从理论上以及从实际的有限精度的运算中,都是稳定的。
4、IIR滤波器有现成的设计公式、数据和表格,FIR滤波器没有现成的设计公式。
IIR滤波器可利用模拟滤波器现成的设计公式、数据和表格,因而计算工作量较小,对计算工具要求不高。FIR滤波器没有现成的设计公式,窗函数法只给出窗函数的计算公式,但计算通带和阻带衰减仍无显式表达式。
5、IIR滤波器主要是设计规格化的、频率特性为分段常数的标准低通、高通、带通、带阻和全通滤波器,而FIR滤波器可设计出理想正交变换器、理想微分器、线性调频器等各种网络,适应性较广。
6、FIR滤波器可以采用快速傅立叶变换(FFT)来实现,在相同阶数下,运算速度可以快得多
三、自我评价和总结
28
在这将近三天的课设里,我学习了一些与MATLAB相关的基础知识,增强的自己的知识,这段日子,时间过的真的好快,解决一个问题要花费很长时间,这是因为自己的能力缘故,但是每当解决一个问题之后,很开心,真的很开心,收获得很大,刚开始的时候,没有头绪,不知道从何做起,后来自己翻课本,在网上查阅相关的资料,再加上老师的讲解,慢慢的有了头绪,然后自己还挺高兴的,就这样到了最后一天下午,老师看到截图后说周期有问题,我们的缺失了一个周期,必须要调试,于是我们走上了漫漫的调试之旅,很长时间后,问题都还没有解决,然后老师就开始慢慢的指导我们了,真的很佩服老师,感觉老师真的很厉害,不到5分钟就调试结束了,期间还给我们讲解了过程,删了一些代码,又加了一些代码,运行后,非常成功,然后我们自己对老师的这种方法理解了大部分,剩下的一些题,跟老师讲的这个题是同类型的,只是参数不同,然后我们又开始调试了,这一次比较快,一个多小时,初步完成了,然后又接着写代码注释,截图,分析,在宿舍写了一晚上,最后终于基本完成了本次课程设计,我相信这次经历对以后的学习与工作都有很大的帮助,另外,衷心的感谢老师的指导,如果没有老师的指导,课设不会这么快的完成,老师,您辛苦了。
29
因篇幅问题不能全部显示,请点此查看更多更全内容