数字信号处理课程设计论文.docx
《数字信号处理课程设计论文.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计论文.docx(17页珍藏版)》请在冰豆网上搜索。
数字信号处理课程设计论文
数字信号处理课程设计
姓名:
学号:
专业:
班级:
指导老师:
题目一:
离散时间序列的时域分析
对离散时间序列的时域分析,通过MATLAB进行离散时间序列的描述,对离散时间序列进行卷积运算,将不同形式的信号波形用不同的时间函数来描述,实现信号的卷积运算。
1.1实现离散时间序列
(1)x0=2*sin(pi/3*n0+3*pi/4)
(2)x1=2^n1
(3)单位抽样序列
(4)单位阶跃序列
程序如下:
A=2;N=20;phi=3*pi/4;
w=pi/3;
n0=-5:
0.5:
10;
x0=A*sin(w*n0+phi);
a=2;N=20;
n1=0:
0.3:
6;
x1=a.^n1;
n2=-20:
20;
x2=[zeros(1,20),1,zeros(1,20)];
n3=-20:
20;
x3=[zeros(1,20),1,ones(1,20)];
subplot(2,2,1);plot(n0,x0);stem(n0,x0);
title('正弦序列');ylabel('x(n)');xlabel('n');
subplot(2,2,2);plot(n1,x1);stem(n1,x1);
title('指数序列');xlabel('n');ylabel('x(n)');
subplot(2,2,3);stem(n2,x2);
title('单位抽样序列');xlabel('n');ylabel('
');
subplot(2,2,4);stem(n3,x3);
title('单位阶跃序列');xlabel('n');ylabel('u(n)');
1.2序列的卷积
程序如下:
A=2;N=20;phi=3*pi/4;
w=pi/3;
n0=-5:
0.5:
10;
x0=A*sin(w*n0+phi);
a=2;N=20;
n1=0:
0.3:
6;
x1=a.^n1;
y=conv(x0,x1);
stem([0:
length(x0-1),x1]);
题目二:
利用DFT进行周期信号频谱分析
连续周期信号相对于离散周期信号,连续非周期信号相对于离散非周期信号,都可以通过时域抽样定理建立相互关系。
因此,在离散信号的DFT分析方法基础上,增加时域抽样的步骤,就可以实现连续信号的DFT分析。
应用离散傅里叶变换DFT,分析连续周期信号xT(t)的频谱。
连续周期信号在满足一定条件下,可以通过傅立叶级数(CTFS)展开为一系列正弦信号的线性叠加,其频谱函数X(k
)是离散频率的复函数,因而周期信号的频谱结构具有离散性和谐波性。
对x(t)以T为间隔进行取样,长度为一个周期T0,dt
T,
T0=NT,得到
=
=
连续周期信号的频谱求解步骤:
(1)根据取样定理,确定时域取样间隔T;
(2)计算一个周期内的取样点数N。
(3)使用FFT命令作N点FFT计算,求得X(k);
(4)最后求得连续周期信号的频谱为X(k
)=
X(k)
2.1连续信号频谱分析比较
例:
利用DFT近似分析连续信号x(t)=e^(-t)*u(t)的幅度频谱并与理论值比较,并分析二者产生误差的原因。
当Fs分别为8Hz、16Hz和32Hz时:
Fs=8Hz时,程序如下:
Fs=8;T=1/Fs;
ws=2*pi*Fs;
N=60;%假设信号长度
L=512;%假设DFT的点数
detaf=N/(Fs*2);detafd=L/Fs;
fprintf('分辨率为%f\n',detaf);
fprintf('谱线间隔为%f\n',detafd);
t=(0:
N-1)*T;xk=exp(-1*t);
X=fftshift(fft(xk,L));
w=(-ws/2+(0:
L-1)*ws/L)/(2*pi);
plot(w,abs(X));gridon;
频谱图如下:
当Fs=16Hz时,程序如下:
Fs=16;T=1/Fs;
ws=2*pi*Fs;
N=60;%假设信号长度
L=512;%假设DFT的点数
detaf=N/(Fs*2);detafd=L/Fs;
fprintf('分辨率为%f\n',detaf);
fprintf('谱线间隔为%f\n',detafd);
t=(0:
N-1)*T;xk=exp(-1*t);
X=fftshift(fft(xk,L));
w=(-ws/2+(0:
L-1)*ws/L)/(2*pi);
plot(w,abs(X));gridon;
频谱图如下:
当Fs=16Hz时,程序如下:
Fs=64;T=1/Fs;
ws=2*pi*Fs;
N=60;%假设信号长度
L=512;%假设DFT的点数
detaf=N/(Fs*2);detafd=L/Fs;
fprintf('分辨率为%f\n',detaf);
fprintf('谱线间隔为%f\n',detafd);
t=(0:
N-1)*T;xk=exp(-1*t);
X=fftshift(fft(xk,L));//fft运算
w=(-ws/2+(0:
L-1)*ws/L)/(2*pi);
plot(w,abs(X));gridon;
频谱图如下:
分析:
有限长序列的DFT仍是有限长序列,故其特别适合数字系统——它不仅具有重要的理论意义,且DFT存在快速算法,所以仍用DFT分析连续信号的频谱。
在利用DFT分析连续信号频谱时,会出现混叠现象,频率泄漏,栅栏现象导致误差。
2.2利用DFT进行运算
例:
考虑
1)取
时,求
的DFT:
X(k);
2)将
(1)中的
以补零方式使
加长到
,求X(k);
3)取
,求X(k)要求画出
和X(k)
程序如下:
N1=11;
k1=0:
N1-1;
n=[0:
10];
xn=cos(0.48*pi*n)+cos(0.52*pi*n);
subplot(3,2,1);stem(xn);title('xn');
y1=fft(xn,N1);
subplot(3,2,2);stem(k1,abs(y1));title('xn11点DFT');
N2=101;
k2=1:
N2;
n2=[0:
100];
xn2=[xn,zeros(1,N2-length(xn))];
subplot(3,2,3);stem(xn2);title('xn2');
y2=fft(xn,N2);
subplot(3,2,4);stem(k2,abs(y2));title('补零方式Xk');
xn3=cos(0.48*pi*n2)+cos(0.52*pi*n2);
subplot(3,2,5);stem(xn3);title('xn3');
y3=fft(xn3,N2);
subplot(3,2,6);stem(k2,abs(y3));title('xn101点DFT');
图形如下:
离散傅里叶变换是有限长序列的傅里叶变换,它相当于把信号的傅里叶变换进行等频率间隔采样,并且有限长序列的离散傅里叶变换和周期序列的离散傅里叶级数本质是一样的。
我们采用DFT来对连续时间信号的傅里叶变换进行逼近,进而分析连续时间信号的频谱。
快速傅里叶变换(FFT)并不是一种新的变换,它是离散傅里叶变换的一种快速算法。
题目三:
离散系统的分析
离散系统的时域方程为:
其变换域分析方法如下:
频域
系统的频率响应为
Z域
系统的转移函数为
分解因式
,其中
和
称为零、极点。
在MATLAB中,可以用函数[z,p,K]=tf2zp(num,den)求得有理分式形式的系统转移函数的零、极点,用函数zplane(z,p)绘出零、极点分布图;也可以用函数zplane(num,den)直接绘出有理分式形式的系统转移函数的零、极点分布图。
另外,在MATLAB中,可以用函数[r,p,k]=residuez(num,den)完成部分分式展开计算;可以用函数sos=zp2sos(z,p,K)完成将高阶系统分解为2阶系统的串联。
3.1求系统的响应
例:
一个线性移不变系统,描述它的差分方程为
(1)求系统的脉冲响应。
(2)如果此系统的输入为
,求系统的响应y(n)其程序如下:
N=20;n=0:
N-1;m=20;
B=[10.5];A=[1,-0.5];
x1=0.8.^n;
x=[(n>=0)&(n<32)];
x1=x1.*x;
y1=filter(B,A,x1);
subplot(2,1,1),stem(n,y1);title('脉冲响应');
x2=cos(pi/10*n+pi/4);
y2=filter(B,A,x2);
subplot(2,1,2);stem(n,y2);title('输入x2时的脉冲响应');
图形如下:
3.2分析系统的频域特性
分别画出如下系统的幅频特性和相频特性曲线
MATLAB程序为:
b=[1];
a=[1-1.60.9425];
[HW]=freqz(b,a,400,’whole’);
Hm=abs(H);
Hp=angle(H);
subplot=(211)
plot(w,Hm),gridon
xlabel(’\omega(rad/s)’),ylabel(’Magnitude’)
title(’离散系统幅频特性曲线’)
subplot(212)
plot(w,Hp),gridon
xlabel(’\omega(rad/s)’),ylabel(’phase’)
title(’离散系统相频特性曲线’)
波形图:
题目四:
数字滤波器的设计
通信与电子信息当中,在对信号作分析与处理时,常会用到有用信号叠加无用噪声的问题。
这些噪声信号有的是与信号同时产生的,有的是在传输过程中混入的,在接收的信号中,必须消除或减弱噪声干扰,这是信号处理中十分重要的问题。
根据有用信号与噪声的不同特性,消除或减弱噪声,提取有用信号的过程就称为滤波。
滤波器的种类很多,实现方法也多种多样,本章利用Matlab来进行数字滤波器的设计。
数字滤波器是一离散时间系统,它对输入序列x(n)进行加工处理后,输出序列y(n),并使y(n)的频谱与x(n)的频谱相比发生某种变化。
由DSP理论得知,无限长冲激响应(IIR)需要递归模型来实现,有限长冲激响应(FIR)滤波器可以采用递归的方式也可采用非递归的方式实现。
本章把FIR与IIR滤波器分别用Matlab进行分析与设计。
数字滤波器的结构参看《数字信号处理》一书。
数字滤波器的设计一般经过三个步骤:
1、给出所需滤波器的技术指标。
2、设计一个H(Z),使其逼近所需要的技术指标。
3、实现所设计的H(Z)。
讨论频率取样法FIR滤波器
频率取样法的设计思想是基于对给出的理想频响Hd(ejw)进行取样,通过离散傅里叶反变换(IDFT)从频谱样点直接求得有限脉冲响应。
频率取样法的过程如下:
Hd(ejw)
H(k)
h(n)
H(ejw)
其中Hd(ejw)是理想滤波器的数字域系统函数(频响),H(ejw)是设计出来的实际滤波器系统函数。
频域取样法的关键是正确确定频域取样点,在ω∈[0--2π]内的样点有如下约束条件:
H(k)=H(N-k)
φ(k)=-φ(N-k)
4.1高通滤波器的设计:
例:
频率采样法设计高通滤波器
M=32;%所需频率采样点个数
Wp=0.6*pi;%通带截止频率
m=0:
M/2;%阻频带上的采样点
Wm=2*pi*m./(M+1);%阻带截止频率
mtr=ceil(Wp*(M+1)/(2*pi));%向正方向舍入ceil(3.5)=4;ceil(-3.2)=-3;
Ad=[Wm>=Wp];
Ad(mtr)=0.28;
Hd=Ad.*exp(-j*0.5*M*Wm);%构造频域采样向量H(k)
Hd=[Hdconj(fliplr(Hd(2:
M/2+1)))];
%fliplr函数实现矩阵的左右翻转conj是求复数的共轭
h=real(ifft(Hd));%h(n)=IDFT[H(k)]
w=linspace(0,pi,1000);%用于产生0,pi之间的1000点行矢量
H=freqz(h,[1],w);%滤波器的幅频特性图
figure
(1)
plot(w/pi,20*log10(abs(H)));%参数分别是归一化频率与幅值
xlabel('归一化频率');ylabel('增益/分贝');title('滤波器的增益响应');
axis([01-500]);
f1=200;f2=700;f3=800%待滤波正弦信号频率
fs=2000;%采样频率
figure
(2)
subplot(211)
t=0:
1/fs:
0.25;%定义时间范围和步长
s=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);%滤波前信号
plot(t,s);%滤波前的信号图像
xlabel('时间/秒');ylabel('幅度');title('信号滤波前时域图');
subplot(212)
Fs=fft(s,512);%将信号变换到频域
AFs=abs(Fs);%信号频域图的幅值
f=(0:
255)*fs/512;%频率采样
plot(f,AFs(1:
256));%滤波前的信号频域图
xlabel('频率/赫兹');ylabel('幅度');title('信号滤波前频域图');
figure(3)
sf=filter(h,1,s);%使用filter函数对信号进行滤波
subplot(211)
plot(t,sf)%滤波后的信号图像
xlabel('时间/秒');ylabel('幅度');title('信号滤波后时域图');
axis([0.20.25-22]);%限定图像坐标范围
subplot(212)
Fsf=fft(sf,512);%滤波后的信号频域图
AFsf=abs(Fsf);%信号频域图的幅值
f=(0:
255)*fs/512;%频率采样
plot(f,AFsf(1:
256))%滤波后的信号频域图
xlabel('频率/赫兹');ylabel('幅度');title('信号滤波后频域图');
图形如下:
总结:
通过这次的数字信号处理实习,使我对数字信号处理的了解有了很大的提高。
刚刚开始的时候,我感觉对MATLAB比较生疏,但是随着学习的深入,渐渐地体会到了MATLAB的优势,尤其是在大量复杂的数据处理方面。
利用Matlab软件这个工具来实现数字信号处理中的一些问题,例如通过Matlab进行波形仿真,以及通过Matlab中的运算函数实现一些复杂的运算,这些使我对数字信号处理有了更深刻的理解。
本次课设,使我感觉受益匪浅。
首先,通过自己亲手查阅资料、编程、调试,培养了我的实践能力和独立分析问题、解决问题的能力。
同时,我对于MATLAB的应用更加熟练了,通过运用本软件,我对于MATLAB编程与调试掌握的更加熟练了,进一步巩固和加深了对课程内容的理解和综合运用。