方焯 陈西曲 刘卫华 陈良艳
基金项目:
湖北省高等学校省级教学研究项目:以能力提升为核心的电子信息科学与技术专业战略性新兴产业人才培养模式的探索与实践(2014322);电子信息科学与技术战略性新兴产业专业人才培养方案与教学方法改革的研究(2013317)。
摘 要
本文将 MATLAB 软件引入到数字信號处理的理论教学中,介绍了离散时间信号的显示与运算和离散系统的分析。通过运用 MATLAB 软件自带的函数可以很方便地画出离散时间信号的图形、离散信号的频谱以及离散系统的零极点图和频率响应曲线。
关键词
数字信号处理;MATLAB;零极点
中图分类号: TN911.72-4;G712 文献标识码: A
DOI:10.19694/j.cnki.issn2095-2457.2020.03.011
自从20世纪70年代采用第一块数字信号处理芯片以来,数字信号处理技术不断地发展。随着DSP(数字信号处理)处理器速度和精密性的飞速发展以及计算能力相应的增强,数字信号处理越来越多地进入人们生活的各个领域。掌握数字信号处理的基本概念和方法,是电子信息、电信科学等专业所必备的。通过数字信号处理课程的学习,可以深入理解离散时间信号及其处理,并且为DSP技术、通信理论与技术、无线电技术、微机应用、电路系统等专业课打下良好的基础。为了更好地掌握数字信号处理的经典理论及其应用,以及数字信号处理基于计算机的方法,我们在教学方法上,将课堂教学、上机实验与MATLAB有机地结合起来,使学生能够充分掌握数字信号处理的基本技术,为进一步的深入学习奠定良好的基础[1]。
1 离散信号的显示与运算
数字信号处理研究的对象是离散时间信号,而离散时间信号可以通过MATLAB工具中函数进行计算以及画图功能显示[2]。如计算一个一阶全通系统的单位采样序列和矩形序列的响应。其原理是线性时不变系统的响应用filter函数或conv函数计算。其MATLAB程序流程如下:
H(z)=(1)
(1)生成单位采样序列x1和长度为7的矩形序列x2。
(2)根据全通系统的函数表达式可以得出b=[-0.5 1]和a=[1 -0.5]。
(3)用filter函数得到单位采样响应h=filter(b,a,x1)和矩形响应y2=filter(b,a,x2)。b和a分别为系统函数分子和分母的系数。
(4)也可以用conv函数计算x2与h的卷积y=conv(x2, h)。
(5)用stem函数画出x1,x2,h,y2,y。
由图1可以看出,单位采样响应和矩形序列的卷积与矩形响应是相等的。同时也说明了我们既可以用filter函数又可以使用conv函数计算线性时不变系统的输出。
图1 输入序列、相应的响应及矩形序列与单位采样响应的卷积
2 画零极点图和频率响应曲线
运用MATLAB工具能够很方便的画出系统的零极点图和频率响应曲线。例如一个系统函数H(z)有一个零点z=2,两个极点z=0.5exp(±j4π/3)。若该系统的直流增益为1,我们可以确定该系统的零极点图和频率响应曲线。其原理是已知系统的零、极点可以用poly函数确定系统函数分子和分母的系统,常系数可以由直流增益得到。依题意,直流增益为1,我们可以得到系统零极点的图用zplane函数得到,数字系统的频率响应用freqz得到。其MATLAB程序流程如下:
H(ejw)|w=0=1(2)
(1)根据系统零点和极点可以确定系统函数分子和分母的系数。
(3)
常系数通过直流增益来计算,常系数为sum(a)/sum(b);
(2)用zplane(b,a)画出系统函数的零极点图;|
(3)用[H,w]=freqz(b,a,N)计算频率响应,N为频率的采样点数。
图2 非最小相位系统的零极点图,单位采样响应,幅频响应和相频响应
图3 最小相位系统的零极点图,单位采样响应,幅频响应和相频响应
我们得到非最小相位系统的零极点图,单位采样响应,幅频响应和相频响应,如图2所示。进一步将零点移至以单位圆为对称轴的镜像位置得到一个最小相位系统,重复前面的步骤得到图3。图2和图3分别为零点在z=2和镜像位置z=0.5,两个极点都在z=0.5exp(±j4π/3)的系统的零极点图,单位采样响应,幅频响应和相频响应。比较可见,将零点由单位圆外移到单位圆内的镜像位置,由非最小相位系统变成了最小相位系统,并没有改变系统的幅频响应,而单位采样响应和相频响应都有变化。图2和图3的h(0)都等于0,图2的h(1)=-1.75,图3的h(1)=3.5,可见最小相位系统的单位采样响应序列的能量集中在n=0附近,从相频响应曲线可以看出,最小相位系统的相频响应曲线的斜率较小,因此运用MATLAB可以很直观的验证最小相位系统具有较小的群延迟。
3 频谱分析
图4 三种抽样方法得到的信号频谱,(1)fs=3000Hz,N=60;(2)fs=1000Hz,N=60;(3)fs=3000Hz,N=20
运用MATLAB工具可以对离散时间信号做DFT频谱分析,例如一个模拟信号用可以借助MATLAB软件做频谱分析。对模拟信号的表达式化简得到公式(5),利用函数fft可以直接返回离散时间信号的频域值。先由模拟信号采样得到不同采样频率下的离散信号x,再用X=fft(x)函数可以直接得出信号的频域值。我们得到图4,可以看出模拟信号的频谱在频率为500Hz,600Hz,700Hz有峰值,其他频率信号的幅度为零。频谱分析如图4所示,采样频率fs和采样点数N分别为(1)fs=3000Hz,N=60;(2)fs=1000Hz,N=60;(3)fs=3000Hz,N=20。可以看出图4。(1)能清晰地分辨出这三个峰值,而图4。(2)的频谱在k=30出现了混跌现象,图4。(3)的抽样点数太少了,峰值很模糊。根据奶奎斯特抽样定理,抽样频率应大于信号最高频率的两倍,因此抽样频率必须大于1400Hz,抽样点数N≥fs/F0,F0为频率分辨率,(3)的抽样频率为3k Hz,F0=100Hz,因此抽样点数至少为30点,因此只有(1)的抽样条件能使抽样信号能分辨所有的频率分量。
xa(t)=[1+cos(2π×100t)]cos(2π×600t)(4)
xa(t)=cos(2π×600t)+cos(2π×500t)+cos(2π×700t)(5)
4 结论
本文介绍了MATLAB在数字信号处理理论教学中的应用。可以看出MATLAB的引入为数字信号的处理提供了便捷的数值计算方法,让数值信号处理的理论教学从大量的数据推导和计算中解放出来,使得数字信号处理简单化、实用化,充分体现了MATLAB软件在数字信号处理的理论教学中的优越性。
参考文献
[1]程佩青.数字信号处理教程[M].北京:清华大学出版社(第四版),2015.
[2]王永玉,孙衢.数字信号处理与应用[M].北京:北京邮电大学出版社,2009.