《数字信号处理》Word文档下载推荐.docx
《《数字信号处理》Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《《数字信号处理》Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
(一)离散信号的产生
离散信号的图形显示使用stem指令。
1.编写MATLAB程序,产生下列典型脉冲序列。
(1)单位脉冲序列:
起点n0,终点nf,在ns处有一单位脉冲。
(2)单位阶跃序列:
起点n0,终点nf,在ns前为0,在ns处及以后均为1(n0<
=ns<
=nf)。
(3)实指数序列:
(4)复指数序列:
其MATLAB程序如下:
n0=0;
nf=10;
ns=3;
n1=n0:
nf;
x1=[(n1-ns)==0];
%单位脉冲序列
n2=n0:
x2=[(n2-ns)>
=0];
%单位阶跃序列
n3=n0:
x3=(0.75).^n3;
%实指数序列
n4=n0:
x4=exp((-0.2+0.7j)*n4);
%复指数序列
subplot(2,2,1),stem(n1,x1);
subplot(2,2,2),stem(n2,x2);
subplot(2,2,3),stem(n3,x3);
figure
subplot(2,2,1),stem(n4,real(x4));
subplot(2,2,2),stem(n4,imag(x4));
subplot(2,2,3),stem(n4,abs(x4));
subplot(2,2,4),stem(n4,angle(x4));
用MATLAB编写卷积运算函数。
function[y,ny]=conv_improve(x,nx,h,nh)
%[x,nx]为第一个信号
%[h,nh]为第二个信号
%conv(x,h)可以实现两个有限长度序列的卷积
ny1=nx
(1)+nh
(1);
ny2=nx(length(x))+nh(length(h));
ny=[ny1:
ny2];
y=conv(x,h);
在命令窗口调用卷积函数。
x=[340-2235];
nx=[-3:
3];
h=[145601];
nh=[N:
N+5];
N是你的学号最后两位,带入后求结果。
结果为:
四、实验分析
观察实验结果,掌握、分析典型的离散时间信号,分析卷积运算。
五、实验总结
总结实验认识、过程、效果、问题、收获、体会、意见和建议。
实验二离散时间信号和离散时间系统
1.掌握计算线性时不变系统的冲激响应的方法。
2.理解时域采样的概念及方法。
3.掌握离散时间信号的z变换和z逆变换分析
4.了解离散时间傅里叶变换(DTFT)
(一)信号采样
采样就是利用周期性抽样脉冲序列pT(t),从连续信号xa(t)中抽取一系列的离散值,得到抽样信号(或称抽样数据信号)即离散时间信号。
(二)线性时不变离散时间系统
线性系统:
满足线性叠加原理的系统。
若y1(n)和y2(n)分别是输入序列x1(n)和x2(n)的响应,则输入x(n)=ax1(n)+bx2(n)的输出响应为y(n)=ay1(n)+by2(n)。
时不变系统:
即系统参数不随时间变化的系统,亦即系统对于输入信号的响应与信号加于系统的时间无关。
即满足:
若y(n)是x(n)的响应,则y(n-m)是输入x(n-m)的响应,其中m是任意整数。
数字滤波器对单位样本序列
的响应称为冲激响应,用h(n)表示。
线性时不变离散系统对输入信号x(n)的响应y(n)可用h(n)来表示:
。
(三)z变换和逆z变换
序列
的z变换定义为:
其中,z是复变量。
相应地,单边z变换定义为:
MATLAB提供了计算离散时间信号单边z变换的函数ztrans和z反变换函数iztrans:
Z=ztrans(x),x=iztrans(z)。
上式中的x和Z分别为时域表达式和z域表达式的符号表示,可通过sym函数来定义。
如果信号的z域表示式
是有理函数,进行z反变换的另一个方法是对
进行部分分式展开,然后求各简单分式的z反变换。
设
的有理分式表示为
(4-3)
MATLAB信号处理工具箱提供了一个对
进行部分分式展开的函数residuez,其语句格式为
[R,P,K]=residuez(B,A)
其中,B,A分别表示X(z)的分子与分母多项式的系数向量;
R为部分分式的系数向量;
P为极点向量;
K为多项式的系数。
若X(z)为有理真分式,则K为零。
(四)离散时间傅里叶变换(DTFT)
1.序列x[n]的离散
时间傅里叶变换定义为:
是变量
的连续函数。
并可写为实部和虚部相加的形式:
也可以表示为:
其中,
称为幅度函数,
称为相位函数,又分别称为幅度谱和相位谱,都是
的实函数。
2.
的离散时间傅里叶逆变换为:
3.由于
是连续函数,而在MATLAB中数据只能以向量的形式存在,所以
只能在一个给定L个离散频率点的离散频率集合中计算,需要尽可能大地选取L的值以表示连续函数
(一)线性时不变系统的冲激响应的计算
设系统为y(n)-0.5y(n-1)+0.75y(n-2)=2.5x(n)+2.5x(n-1)+2x(n-2),计算上述系统的冲激响应。
参考程序如下:
N=40;
num=[2.52.52];
den=[1-0.50.75];
y=impz(num,den,N);
%画出冲激响应
stem(y);
xlabel('
时间序号n'
);
ylabel('
振幅'
title('
冲激响应'
grid;
(二)时域采样
对连续正弦时间信号x(t)=cos(2πft)进行采样,其中f=13。
t=0:
0.0005:
1;
f=13;
xa=cos(2*pi*f*t);
subplot(2,1,1)
plot(t,xa);
grid
xlabel('
时间,msec'
title('
连续时间信号'
axis([01-1.21.2])
subplot(2,1,2);
T=0.1;
n=0:
T:
xs=cos(2*pi*f*n);
k=0:
length(n)-1;
stem(k,xs);
离散时间信号'
axis([0length(n)-1-1.21.2])
(三)z变换和z反变换
1.用ztrans函数求函数
的z变换。
MATLAB参考程序如下:
x=sym('
a^n*cos(pi*n)'
Z1=ztrans(x);
Z=simplify(Z1);
2.用iztrans函数求函数
的z反变换。
Z=sym('
z*(2*z^2-11*z+12)/(z-1)/(z-2)^3'
x=iztrans(Z);
simplify(x)
3.用MATLAB命令对函数
进行部分分式展开,并求出其z反变换。
B=[18];
A=[18,3,-4,-1];
(四)序列的离散时间傅里叶变换(DTFT)
求序列x(n)=(-0.8)n,
的离散时间傅里叶变换,并画出它的实部、虚部、幅度和相位。
n=-10:
10;
x=(-0.8).^n;
k=-200:
200;
w=(pi/100)*k;
X=x*(exp(-j*pi/100)).^(n'
*k);
subplot(4,1,1)
plot(w/pi,real(X));
X(e^{j\omega})实部'
)
\omega/\pi'
ylabel('
subplot(4,1,2)
plot(w/pi,imag(X));
X(e^{j\omega})虚部'
subplot(4,1,3)
plot(w/pi,abs(X));
X(e^{j\omega})幅度谱'
subplot(4,1,4)
plot(w/pi,angle(X));
相位谱arg[X(e^{j\omega})]'
以弧度为单位的相位'
1.观察实验结果,分析系统的线性、时不变性,求出系统的冲激响应。
2.对正弦信号进行采样。
3.求出程序(三)中的(三)z变换和z反变换表达式。
4.观察程序(四)离散时间信号的傅里叶变换的结果并分析。
实验三离散傅里叶变换(DFT)及其快速算法(FFT)
1.理解DFT算法,并能用MATLAB实现DFT。
2.加深对FFT的理解,体会DFT和FFT之间的关系。
3.熟悉应用FFT实现两个序列的线性卷积的方法。
N点序列x(n)的DFT和IDFT定义:
若将DFT变换的定义写成矩阵形式,则得到
X=A﹒x,其中DFT变换矩阵A为
可以用函数U=fft(u,N)和u=ifft(U,N)计算N点序列的DFT正、反变换。
(一)离散傅里叶变换(DFT)
1.用MATLAB求N=16的有限序列
的DFT结果,并画出结果图。
N=16;
n=0:
1:
N-1;
%时域采样
xn=sin(n*pi/8)+sin(n*pi/4);
k=0:
%频域采样
WN=exp(-j*2*pi/N);
nk=n'
*k;
WNnk=WN.^nk;
Xk=xn*WNnk;
subplot(2,1,1)
stem(n,xn);
subplot(2,1,2)
stem(k,abs(Xk));
2.矩形序列x(n)=R5(n),求N分别取8,32时的DFT,最后绘出结果图形。
function[Xk]=dft(xn,N)
n=[0:
N-1];
%n的行向量
k=[0:
%k的行向量
%旋转因子
%产生一个含nk值的N乘N维矩阵
%DFT矩阵
%DFT系数的行向量
调用上面函数解题。
N=8;
x=[ones(1,5),zeros(1,N-5)];
X=dft(x,N);
%N=8点离散傅立叶变换
magX=abs(X);
phaX=angle(X)*180/pi;
k=(0:
length(magX)'
-1)*N/length(magX);
subplot(2,2,1);
stem(n,x);
x(n)'
subplot(2,2,2);
stem(k,magX);
axis([0,10,0,5]);
|X(k)|'
N=32;
%N=32点离散傅立叶变换
subplot(2,2,3);
subplot(2,2,4);
axis([0,32,0,5]);
|x(k)|'
(二)快速傅里叶变换(FFT)
1.已知一个8点的时域非周期离散阶跃信号,n1=0,n2=7,在n0=4前为0,n0以后为1。
用N=32点进行FFT变换,作其时域信号图及信号频谱图。
n1=0;
n0=4;
n2=7;
n=n1:
n2;
w=[(n-n0)>
%建立时间信号
subplot(2,1,1);
stem(n,w);
i=0:
%频率采样点从0开始
y=fft(w,N);
%用快速算法计算DFT
aw=abs(y);
%求幅度值
subplot(2,1,2);
stem(i,aw);
2.利用FFT计算线性卷积。
设x(n)=[23145];
h(n)=[21745723]。
计算二者的线性卷积。
x=[23145];
h=[21745723];
Lenx=length(x);
%求序列x的长度
Lenh=length(h);
%求序列h的长度
N=Lenx+Lenh-1;
Xk=fft(x,N);
%计算x序列的DFT
Hk=fft(h,N);
%计算h序列的DFT
Yk=Xk.*Hk;
y=ifft(Yk)%求IDFT
n'
y(n)'
x(n)*h(n)'
四.实验分析
认真观察实验结果,记录结果,并画出结果图形,分析实验产生的现象的原因。
五.实验总结
总结实验认识、过程、效果及体会、意见建议。
实验四IIR数字滤波器的设计
1.熟悉Butterworth滤波器、Chebyshev滤波器的频率特性。
2.掌握双线性变换法及冲激响应不变法设计IIR数字滤波器的具体设计方法及其原理,熟悉用双线性变换法及冲激响应不变法设计低通、高通和带通IIR数字滤波器的计算机编程。
3.观察双线性变换及冲激响应不变法设计的滤波器的频域特性,了解双线性变换法及冲激响应不变法的特点。
(1)冲激响应不变法
用数字滤波器的单位冲激响应序列h(n)模仿模拟滤波器的冲激响应ha(t),让h(n)正好等于ha(t)的采样值,即
h(n)=ha(nT)
其中T为采样间隔,如果以Ha(S)及H(z)分别表示ha(t)的拉式变换及h(n)的Z变换,则
(2)双线性变换法
S平面与z平面之间满足以下映射关系:
s平面的虚轴单值地映射于z平面的单位圆上,s平面的左半平面完全映射到z平面的单位圆内。
双线性变换不存在混叠问题。
双线性变换时一种非线性变换
,这种非线性引起的幅频特性畸变可通过预畸而得到校正。
1.设采样频率fs=4000+sn*100Hz,sn为学号后两位。
用脉冲响应不变法和双线性变换法设计一个三阶巴特沃兹滤波器,其3dB边界频率为fc=1kHz。
用MATLAB程序实现如下:
sn=20;
%学号后两位
[B,A]=butter(3,2*pi*1000,'
s'
%巴特沃思滤波器
%[b,a]=butter(n,Wn,‘s’),n为滤波器的阶数,Wn
%为边界频率,按s的降幂排列
fs=4000+sn*100;
[num1,den1]=impinvar(B,A,fs);
%脉冲响应不变法,4000为采样频率
[h1,w]=freqz(num1,den1);
%计算系统频率特性
[B,A]=butter(3,2/0.00025,'
%2/0.00025预畸变模拟滤波器边界频率
[num2,den2]=bilinear(B,A,fs);
%双线性法
[h2,w]=freqz(num2,den2);
f=w/pi*2000;
plot(f,abs(h1),'
-.'
f,abs(h2),'
-'
grid;
频率/Hz'
幅值/dB'
运行该程序,并绘出运行结果。
2.设计一数字高通滤波器,它的通带为400~500Hz,通带内容许有0.5dB的波动,阻带内衰减在小于317Hz的频带内至少为19dB,采样频率为1,000Hz。
wc=2*1000*tan(2*pi*400/(2*1000));
wt=2*1000*tan(2*pi*317/(2*1000));
[N,wn]=cheb1ord(wc,wt,0.5,19,'
[B,A]=cheby1(N,0.5,wn,'
high'
'
[num,den]=bilinear(B,A,1000);
[h,w]=freqz(num,den);
f=w/pi*500;
plot(f,20*log10(abs(h)));
axis([0,500,-80,10]);
xlabel('
)
ylabel('
幅度/dB'
分析Butterworth滤波器、Chebyshev滤波器的特性。
总结实验认识、效果、收获及体会、意见、建议。
实验五FIR数字滤波器的设计(设计性实验)
实验名称:
FIR数字滤波器的设计
实验项目性质:
编程设计
所属课程名称:
数字信号处理
计划学时:
1.掌握用窗函数法、频率采样法设计FIR滤波器的原理及方法,熟悉响应的计算机编程;
2.熟悉线性相位FIR滤波器的幅频特性和相频特性;
3.了解各种不同窗函数对滤波器性能的影响。
二、预习与参考
2.1窗口法
窗函数法设计线性相位FIR滤波器步骤
∙确定数字滤波器的性能要求:
临界频率{ωk},滤波器单位脉冲响应长度N;
∙根据性能要求,合理选择单位脉冲响应h(n)的奇偶对称性,从而确定理想频率响应Hd(ejω)的幅频特性和相频特性;
∙求理想单位脉冲响应hd(n),在实际计算中,可对Hd(ejω)按M(M远大于N)点等距离采样,并对其求IDFT得hM(n),用hM(n)代替hd(n);
∙选择适当的窗函数w(n),根据h(n)=hd(n)w(n)求所需设计的FIR滤波器单位脉冲响应;
∙求H(ejω),分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述设计过程,以得到满意的结果。
窗函数的傅式变换W(ejω)的主瓣决定了H(ejω)过渡带宽。
W(ejω)的旁瓣大小和多少决定了H(ejω)在通带和阻带范围内波动幅度,常用的几种窗函数有:
∙矩形窗w(n)=RN(n);
∙Hanning窗
;
∙Hamming窗
;
∙Blackmen窗
∙Kaiser窗
式中Io(x)为零阶贝塞尔函数。
2.2频率采样法
频率采样法是从频域出发,将给定的理想频率响应Hd(ejω)加以等间隔采样
然后以此Hd(k)作为实际FIR数字滤波器的频率特性的采样值H(k),即令
由H(k)通过IDFT可得有限长序列h(n)
将上式代入到Z变换中去可得
其中Φ(ω)是内插函数
三、设计指标
(1)矩形窗设计线性相位低通滤波器(参数自主设定)
(2)改用Hanning窗,设计
(1)中的低通滤波器。
四、实验要求(设计要求)
(1)编写窗函数法FIR滤波器设计代码,观察幅频和相位特性的变化,注意长度N变化的影响;
观察并记录窗函数对滤波器幅频特性的影响,比较两种窗的特点;
(2)要求所编的程序能正确运行;
画出波形,完成并提交实验报告。
五、实验(设计)仪器设备和材料清单
PC机:
70台,70组,1人/每组
MATLAB6.5教学版安装光盘:
4张
其它消耗材料金额:
10元
六、调试及结果测试
提交带注释的(或给出每个操作所涉及的算法)且运行正确的源程序,说明调试过程中所遇到的问题、解决方法及经验与体会。
七、考核形式
理论课程闭卷考试,实验部分提交实验报告。
八、实验报告要求
1.实验报告必须独立完成,抄袭、复制他人作无效处理:
2.实验报告要求:
(1)要按规定从教学网站下载样板文件格式书写。
(2)实验报告要注明姓名,学号,实验名称,完成日期,联系电话。
(3)内容不真实、不认真、不能按时完成的,不记成绩。
(4)简要说明设计题目、内容、原理。
3.附滤波器设计代码及要求的图形。
对实验结果和实验中的现象进行简练明确的分析并作出结论或评价,对本人在实验全过程中的经验、教训、体会、收获等进行必要的小结。
4.报告要求独立完成,篇幅为A4纸不超过5页,突出自己的设计。
5.对改进实验内容、安排、方法、设备等的建议和设想,(此部分可选作)。
6.不能完成实验报告者,不能参加课程考试。
九、思考题
1.不同窗函数对滤波器性能的影响如何?
2.线性相位FIR滤波器的幅频特性和相频特性如何?
附MATLAB基本操作
一、目的:
1.掌握MATLAB的基本操作、常用命令。
2.学会利用MATLAB图形用户界面设计工具设计一个与整个实验内容配套的实验工作平台,进一步提高学生编程的能力和技巧。
二、原理
(一)MATLAB简介
MATLAB的名称源自MatrixLaboratory,1984年由美国Mathworks公司推向市场。
它是一种科学计算软件,专门以矩阵的形式处理数据。
MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。
MATLAB在信号处理中的应用主要包括符号运算和数值计算仿真分析。
例如,解微分方程、傅里叶正反变换、拉普拉斯正反变换、z正反变换、函数波形绘制、函数运算、冲激响应与阶跃