数字信号处理A

来源:互联网 发布:e店宝软件打不开 编辑:程序博客网 时间:2024/06/05 16:03

想要文档联系我qq:1260157543,免费发给你文档,哈哈

一、课程设计目的:

1全面复习课程所学理论知识,巩固所学知识重点和难点,将理论与实践很好地结合起来。

2.提高综合运用所学知识独立分析和解决问题的能力;

3.熟练使用一种高级语言进行编程实现。

二、课程设计要求

1使用MATLAB开发工具编程实现上述内容(题目1,题目2,题目3)。

2、预习课程设计任务书,熟悉设计内容、理解设计要求、提出基本设计方案。在设计过程中,应该勤于思考、独立编写程序、独立调试程序,按时完成课程设计任务。

三、课程设计内容与分析

题目 1:

1)已知xa(t)=e-1000|t|,求其傅里叶变换Xa(jΩ),画出模拟信号及其连续时间傅里叶变换的曲线图。

(2) 以Xa(t)为例,说明采样频率对频率响应的影响,分别采用fs=1000Hz fs=5000Hz,绘出X(ejw)曲线。

说明:本题目要求掌握 Matlab环境下连续傅里叶变换的实现方法,体会采样频率对频率响应的影响,通过编程实现加深对这些概念的理解。

题目 2:已知时域信号 x(n) = cos(0.48πn) + cos(0.52πn),求下面 种情况的 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 ) ,并作图。

讨论以上 种情况的区别。

说明:本题目要求掌握 Matlab 环境下离散傅里叶变换的实现方法,考察对频谱混叠失真、 频谱泄漏、栅栏效应以及频率分辨力等概念的认识,通过编程加深对这些概念的理解。

题目 3:基于 Matlab 的数字滤波器设计。

低通滤波器的常用指标如下所示:

 


分别用 IIR 和 FIR 两种数字滤波器类型进行设计, 并给出 IIR 数字滤波器参数和 FIR 数字滤波器的冲激响应,绘出它们的幅度和相位频响曲线,讨论它们各自的实现形式和特点。

四 、设计程序代码分析及结果

题目 1-1:代码如下:

close all

clear

clc

% 模拟信号

Dt=0.00005;  t=-0.005:Dt:0.005;  xa=exp(-1000*abs(t));

%连续时间傅立叶变换

Wmax=2*pi*2000;

K=500;k=0:1:K;

W=k*Wmax/K; Xa=xa*exp(-j*t'*W)*Dt; Xa=real(Xa);

W=[-fliplr(W),W(2:501)];   %频率从-Wmax to Wmax

Xa=[fliplr(Xa),Xa(2:501)];   %Xa 介于 -Wmax和 Wmax之间

subplot(1,1,1)

subplot(2,1,1);plot(t*1000,xa);

xlabel('t  毫秒');  ylabel('xa(t)');  title('模拟信号')

subplot(2,1,2);

plot(W/(2*pi*1000),Xa*1000);

xlabel('频率(单位:KHz)');  ylabel('Xa(jW)*1000')

title('连续时间傅立叶变换')

 结果显示:

 

题目 1-2:代码如下:

close all

clear

clc

tf=10;N=100;

dt=10/N;t=(1:N)*dt;T=-10:10;

wf=100; Nf=50; 

w1=linspace(0,wf,Nf);dw=wf/(Nf-1); 

W1=-50:50;

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);

Y2=(exp(1i*W1)./(exp(0.2)-exp(1i*W1))+exp(-1i*W1)/(exp(0.2)-exp(-1i*W1))); 

F=[fliplr(F1),F1(2:Nf)];  

t=[-fliplr(t),t];

Xat1=exp(-1000*abs(T));

subplot(2,2,1);plot(T,Xat1,'linewidth',1.5);grid                  

xlabel('t');ylabel('Xa(t)');title('Xa(t)--模拟信号');

subplot(2,2,2);plot(w,F,'linewidth',1.5);grid

xlabel('w');ylabel('Xa(jΩ)');title('Xa(jΩ)--傅里叶变换');

subplot(2,2,3);plot(W1,Y1,'linewidth',1.5);grid

xlabel('w');ylabel('X1(e^jw)');title('fs=1000Hz的X(e^jw)');

subplot(2,2,4);plot(W1,Y2,'linewidth',1.5);grid

xlabel('w');ylabel('X2(e^jw)');title('fs=5000Hz的X(e^jw)');

结果显示:

 

题目 2-1:代码如下:

close all

clear

clc

n=(0:1:9); 

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); 

title('x(n) (0<=n<=9)'); 

xlabel('n');ylabel('x(n)');  

axis([0,10,-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); 

title('DTFT'); 

xlabel('w');ylabel('x(jw)'); 

axis([0,2*pi,0,10]); 

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(K)不能正确分辨w1=0.48*pi,w2=0.52*pi这两个频率分量。

题目 2-2:代码如下:

close all

clear

clc

n=(0:1:9); 

y=cos(0.48*pi*n)+cos(0.52*pi*n); 

n1=(0:1:99); 

x=[y(1:1:10),zeros(1,90)]; 

subplot(3,1,1); 

stem(n1,x); 

title('x(n) (0<=n<=99)'); xlabel('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); 

title('DTFT'); 

xlabel('w');

axis([0,2*pi,0,10]); 

subplot(3,1,3);

x1=fft(x);magx1=abs(x1); 

stem(n1,abs(magx1)); 

axis([0,100,0,10]); 

xlabel('frequency in pi units'); 

title('DFT');

 结果显示:

 

分析:虽然x(n)补零至100点,X(K)的密度,截断函数的频谱混叠作用没有改变,这时的物理分辨率使X(K)仍不能正确分辨w1=0.48*pi,w2=0.52*pi这两个频率分量。
题目 2-3:代码如下:

close all

clear

clc

n=(0:1:99);

x=cos(0.48*pi*n)+cos(0.52*pi*n);

subplot(3,1,1); 

stem(n,x);

title('x(n) (0<=n<=99)'); 

xlabel('n'); 

axis([0,100,-2.5,2.5]);%axis([xmin xmax ymin ymax]) 

w = linspace(0,2*pi,length(n));

xw = x*exp(-j*[1:length(n)]'*w); 

magx=abs(xw); 

subplot(3,1,2); 

plot(w,magx); 

title('DTFT'); xlabel('w'); 

axis([0,2*pi,0,10]); 

subplot(3,1,3);

x1=fft(x);

magx1=abs(x1); 

stem(n,abs(magx1)); 

axis([0,100,0,10]); 

title('DFT'); xlabel('frequency in pi units'); 

 结果显示:

 

分析:截断函数的加宽且为周期序列的整数倍,改变了频谱混叠作用,提高了“物理”分辨率使X(K)能正确分辨w1=0.48*pi,w2=0.52*pi这两个频率分量。

题目 2-4:代码如下:

close all

clear

clc

n=(0:1:127);

x=cos(0.48*pi*n)+cos(0.52*pi*n); 

subplot(3,1,1); 

stem(n,x); 

title('x(n) (0<=n<=127)'); xlabel('n'); 

axis([0,127,-2.5,2.5]);

w = linspace(0,2*pi,length(n));

xw = x*exp(-j*[1:length(n)]'*w); 

magx=abs(xw); 

subplot(3,1,2); 

plot(w,magx); 

title('DTFT');xlabel('w'); 

axis([0,2*pi,0,70]);

subplot(3,1,3); 

x1=fft(x);

magx1=abs(x1); 

stem(n,abs(magx1)); 

axis([0,128,0,10]); 

title('DFT'); xlabel('frequency in pi units'); 

 结果显示:

 

分析:截断函数虽进一步加宽,但不是周期序列的整数倍,所以尽管 X(K)能正确分辨w1=0.48*pi,w2=0.52*pi这两个频率分量,但还是呈现除了频谱泄露。

题目 2-5:代码如下:

close all

clear

clc

n=(0:1:49); 

x=cos(0.48*pi*n)+cos(0.52*pi*n); 

subplot(3,1,1); 

stem(n,x); 

title('x(n) (0<=n<=49)');

xlabel('n'); 

axis([0,49,-2.5,2.5]);

w = linspace(0,2*pi,length(n));

xw = x*exp(-j*[1:length(n)]'*w); 

magx=abs(xw);

subplot(3,1,2); 

plot(w,magx);

title('DTFT');xlabel('w');

axis([0,2*pi,0,30]); 

subplot(3,1,3); 

x1=fft(x);

magx1=abs(x1); 

stem(n,abs(magx1)); 

axis([0,50,0,10]); 

title('DFT'); xlabel('frequency in pi units'); 

 结果显示:

 

分析:截断函数的宽度正好为序列的周期,即这时的“物理”分辨率使X(K)正好能正确分辨w1=0.48*pi,w2=0.52*pi这两个频率分量。 

题目 3-1:代码如下:

close all

clear

clc

wp=[0.45,0.65];ws=[0.3,0.75];

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数字滤波器'); 

xlabel('w/pi');ylabel('幅频频响曲线');

subplot(2,1,2);

plot(w/pi,angle(H));          %画相频

xlabel('w/pi');ylabel('相位频响曲线');

得参数:

  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

结果显示:

 

题目 3-2:代码如下:

close all

clear

clc

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数字滤波器'); 

xlabel('w/pi');ylabel('幅频频响曲线');

subplot(2,1,2);

plot(w/pi,angle(H));    %画相频

xlabel('w/pi');ylabel('相位频响曲线'); 

得冲激响应:

  hn =b(n+1)=

   0.0011    0.0005    0.0001    0.0006   -0.0031   -0.0008    0.0051   -0.0002

  -0.0002   -0.0016   -0.0109    0.0087    0.0149   -0.0098   -0.0018   -0.0119

  -0.0145    0.0463    0.0118   -0.0445    0.0003   -0.0340    0.0250    0.1591

  -0.1126   -0.2397    0.2135    0.2135   -0.2397   -0.1126    0.1591    0.0250

  -0.0340    0.0003   -0.0445    0.0118    0.0463   -0.0145   -0.0119   -0.0018

  -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

结果显示:

 

分析实验结果:

IIR滤波器阶数比FIR少。

1IIR滤波器存在着输出对输入的反馈,因此可以用比FIR滤波器少的阶数来满足技术指标,这样,IIR滤波器所用的存储单元和所需的运算次数都比FIR滤波器少。 

2IIR滤波器主要是设计规格化的、频率特性为分段常数的标准低通、高通、带通、带阻和全通滤波器,而FIR滤波器可设计出理想正交变换器、理想微分器、线性调频器等各种网络,适应性较广。 

五、自我评价和总结

认识:通过课设进一步了解与课程相关知识。掌握 Matlab 环境下连续傅里叶变换的实现方法,体会采样频率对频率响应的影响;掌握 Matlab 环境下离散傅里叶变换的实现方法,考察对频谱混叠失真、频谱泄漏、栅栏效应以及频率分辨力等概念的认识;了解IIR 和 FIR 两种数字滤波器类型的实现形式和特点;通过编程实现加深对这些概念的理解。

过程:在这一过程中,通过自己查阅资料,并结合课程学到的知识。完成课程内容。其间,与同学一起解决问题,缩短了时间周期,更好的完成课程内容。

问题:一些题有不同的解决方法,在题目1中需要结合课程相关的公式才能推出,感觉还是有点对本课程还是不太熟悉,课下还需加强对本课程的基本知识点进行巩固。为以后打下基础做准备。

体会:通过本次课程,收货良多;可是还是对一些基本知识点不熟悉0。希望再接再厉。

0 0
原创粉丝点击