Matlab在数字信号处理实验教学中的应用研究

2011-08-08 12:48关成斌王捷张福宝宋杰
电脑与电信 2011年11期
关键词:运算量信号处理运算

关成斌 王捷 张福宝 宋杰

(海军航空工程学院 电子信息工程系,山东 烟台 264001)

1.引言

“数字信号处理”课程是各高校电子类专业学生的一门重要的专业基础课,其内容抽象、公式繁多、理论性强,常常使学生感觉到枯燥乏味、抽象难学。为了提高学习效果,为后续专业课程的学习打下坚实的基础,数字信号处理课程的实验环节就显的尤其重要[1~2]。

数字信号处理的实验可用有不同的方法来实现。比如有的公司开发了DSP实验箱,可以应用于数字信号处理的实验教学中[3]。但DSP实验箱一般需要向DSP芯片中写程序,这种编程比较复杂,而且程序的可读性较差,因此虽然现象直观但是对原理的理解不是那么直接。目前数字信号处理实验较多采用Matlab语言来实现。Matlab语言以矩阵运算为基础,具有可靠的数值计算功能和符号计算功能、强大的绘图和图形用户界面可视化功能[4-6],具有丰富的数字信号处理函数[7]等特点,将其用于数字信号处理实验,使问题变得简单、明晰,因此它在数字信号处理实验环节中发挥了越来越重要的作用。

2.基于Matlab的数字信号处理实验示例

对信号进行频域分析是数字信号处理中非常重要的内容,DFT是分析序列离散谱的重要工具,并且DFT在其它许多领域都有广泛的应用[1~2]。但是直接计算DFT的运算量太大,运算速度太慢。FFT是DFT的快速算法,可提高运算速度,在资源的占用以及处理的实时性上要优越得多。本文以DFT和FFT算法的比较为例设计如下实验教学方案。

2.1 实验目的

进一步加深对DFT算法原理和基本性质的理解;掌握FFT算法原理和编程实现方法;通过对实验结果的分析比较,加深对DFT和FFT运算量不同的认识。

2.2 实验原理

DFT表达式为:

FFT正是利用旋转因子的对称性和周期性等,通过一定的数学方法降低运算量。目前,最常用FFT算法有基2DIT-FFT和基2DIF-FFT、分裂基FFT、离散哈特莱变换等。本实验以研究基2DIT-FFT的软件实现方法为例,其蝶形运算流图如图1所示。

图1 基2DIT-FFT碟形运算流图

2.3 程序流程图

DFT运算的程序框图如图2所示。基2DIT-FFT的程序框图如图3所示。

2.4 程序代码

图2 DFT运算程序框图

图3 基2DIT-FFT运算程序框图

2.5 实验结果

原始序列为对式(2)所示信号的一个周期进行4096次等间隔采样得到的序列。序列如图4所示,图5为对该序列进行局部放大的效果。

图4 原始序列

图5 原始序列局部放大

其中,randn为正态分布的随机数,该随机数在任意采样点上加入。

图6为进行4096点DFT运算得到的谱序列,图7为其局部放大效果图。

图6 DFT运算得到的谱序列

图7 DFT运算得到的谱序列局部放大

图8为进行4096点FFT运算得到的谱序列,图9为其局部放大效果图。

DFT运算所用时间为18.766s,FFT运算所用时间为0.031s。采用DFT算法是采用FFT算法所用时间的605.35倍。而理论上DFT与FFT算法的运算量之比为[1]:

将N=4096,代入式(3)中计算,得到理论的运算量之比为682.67。

图8 FFT运算得到的谱序列

图9 FFT运算得到的谱序列局部放大

2.6 实验结论

通过上述实验,可得如下结论:

(1)采用DFT和FFT得到的信号频谱完全相同,证实了DFT与FFT机理是相同的;

(2)DFT算法和FFT算法的运算速度相差很大,证实了FFT算法的高效,且点数越大,FFT的运算速度优势越明显;

(3)采用DFT算法和FFT算法计算机耗时之比为605.35,而理论计算的运算量之比为682.67,考虑计算机资源占用不均等因素,可证实式(3)所示的运算量公式是正确的。

3.用Matlab进行数字信号处理实验的几点思考

(1)重视实验在整个数字信号处理课程学习中的重要性

实践教学环节可以弥补学生对理论知识的感性认识不足的缺陷,是理论联系实际的有效途径,是培养学生的分析解决问题能力、创新意识、实践技能和提高综合素质最有效的手段。实验教学不能仅限于过程演示,重点在于锻炼动手能力,既要掌握完善的操作程序和实验手段,更要培养研究方法和钻研精神。

(2)在课程教学的过程中加入部分演示程序,激发学员作实验的积极性

在实验教学中发现,相当一部分学生对Matlab语言并不熟悉,加上对所学的理论掌握不够扎实,面对较复杂的公式,在参数设置、实验结果分析等方面往往不知所措。一次实验课下来,经常达不到预期的学习效果。针对这种情况,在课程教学的过程中,应及时加入必要的演示程序。这样既提升了理论课的学习效果,又使学生尽早熟悉Matlab,激发他们对实验的兴趣,减少做实验的盲目性,充分发挥学生的主观能动性。

(3)编程思路要紧扣原理

每个实验所要用到程序都可有不同的思路进行编写。为了使学生深入地理解和消化基本理论,要求在编程时应紧扣原理。Matlab中的数字信号处理工具箱可非常简单地完成实验任务,如FFT,可直接实现FFT运算。在初次实验时,要规定学员不能直接调用这些函数生成实验结果,而应严格按照原理来实现相应的功能。教师在审查实验时也不能只看报告及结果,而要通过运行学生的程序,来检验实验的完成情况。

(4)注重创新能力的培养

在完成基本任务的基础上,应鼓励学生采用其它的思路和方法去实现相同的实验。比如可以鼓励学生尝试采用DIF-FFT、基4FFT算法等开发FFT运算程序,这样可以拓展思路,更好地提高实验设计与分析的能力,还有利于培养独立思考、综合运用知识和解决问题的能力。

4.结束语

Matlab作为一种交互式的面向对象的语言,支持矩阵运算、语法简单、容易上手,用于数字信号处理的实验教学取得了很好的效果。实验项目的开设灵活多变,实验现象准确直观,实验参数的设置与改变方便便捷。实践证明,通过相关的实验,能帮助学生直观地理解一些抽象的概念、理论和知识点,极大地提高了教学效果。又能巩固学生的程序设计知识,使学生的编程能力得以提高,激发学生的求知欲,激励学生进行积极探究和思考,增强学生对专业知识的应用能力,为培养创新思维奠定基础。

[1]程佩青.数字信号处理教程(第三版).北京:清华大学出版社,2007.

[2]丁玉美,高西全.数字信号处理(第二版).西安:西安电子科技大学出版社,2004.

[3]竺锦梁,陈芬,刘鹏.基于DSP实验箱显示/控制模块的应用系统设计[J].现代电子技术,2008,31(7):128-130.

[4]陈怀琛,吴大正,高西全.Matlab及在电子信息课程中的应用(第三版)[M].北京:电子工业出版社,2006.

[5]徐红梅,宋正勋,胡贞.Matlab在电子信息类专业基础课中的应用[J].长春光学精密机械学院学报,2001,9(1):24-26.

[6]张建珍,陈振斌,何金戈.Matlab在理工专业课程教学中的应用[J].海南大学学报,2010(9):276-278.

[7]伯晓晨等编.Matlab工具箱应用指南—信息工程篇[M].北京:电子工业出版社(第一版),2000.

猜你喜欢
运算量信号处理运算
重视运算与推理,解决数列求和题
有趣的运算
用平面几何知识解平面解析几何题
《信号处理》征稿简则
《信号处理》第九届编委会
《信号处理》征稿简则
《信号处理》第九届编委会
减少运算量的途径
“整式的乘法与因式分解”知识归纳
让抛物线动起来吧,为运算量“瘦身”