多采样率信号处理仿真系统设计与应用
2015-10-12阙大顺
阙大顺,王 虹,杨 杰
(武汉理工大学信息工程学院,湖北武汉,430070)
采样技术在“数字信号处理”课程中占有重要的地位。一般模拟信号数字化处理时,采样频率都被看作一个固定值,但在实际应用系统中,有时系统工作频率是变化的,即会遇到采样频率转换的问题,这样的系统称为多采样率数字信号处理系统,其在数字语音、数字视频和数字通信等处理系统中有着广泛的应用[1,2]。如数字电视中即要传输语音信号,又要传输图像信号,这两种信号的频率很不相同,采样频率也自然不同,系统必然要工作在多采样频率状态;又如数字电话中,同时要传输语音、传真甚至视频信号,几种信号的带宽相差很大,所以系统也应具备多采样频率功能,并能根据传输的要求进行频率转换。近年来,多采样率数字信号处理已成为数字信号处理领域中一个重要的研究内容[1]。
鉴于多采样率理论较难掌握,笔者在实际教学中,结合Matlab编程,可以显示在多采样率变化前后所分析信号的时域和频域演化过程,以加深学生对于多采样率技术的理解。同时为了便于开展实验教学和学生课外学习,笔者还完成了基于C++与Matlab混合编程的多采样频率数字信号处理虚拟实验系统的设计,使学生能系统深入学习采样、抽取、内插和有理数倍等多种方法实现采样率的转换。
1 系统总体设计
多采样率数字信号处理是以连续信号的采样为基础的。在该部分教学中,首先讲解有限长序列的抽取、插值和有理数倍采样率转换的基本原理,其次是采样率转换滤波器的实现,最后完成上述内容的Matlab编程仿真实现[1]。
本文介绍的多采样率数字信号处理仿真系统由C++与Matlab混合编程实现,该系统集Matlab强大的数值计算功能和VC++开发效率高、可视化强的优点于一体,在很大程度上解决了该课程理论抽象、计算繁琐的问题,使学生在相对直观的条件下更好地掌握该部分理论的核心内容,且便于直观分析比较[3]。
该系统采用模块化编程方法设计,完成的主要功能模块框图如图1所示。
图1 多采样率系统功能模块框图
该模块结构图中的各个主要模块还包含了不同的子功能块,点击软件主界面中的控键可分别进入相应的底层界面,根据提示进行相关数据输入后便可进行动态仿真。
编程实现的系统主界面如图2所示。
图2 多采样率仿真系统主界面
点击图2中的“采样演示”、“多采样率演示”和“应用举例演示”等,可完成对应图1中的采样、抽取、内插和有理数倍等多种功能实现对多采样率转换的学习,最后通过针对某一语音信号的多采样率变换来展示其具体的应用。
学生可通过上述操作使用本仿真系统,也可运行本系统软件包提供的底层Matlab处理程序;从采样、抽取和插值的含义出发,修改底层的参数,来研究采样率整数倍增大和整数倍减小的过程;使用抽取和插值结合,来达到有理数倍改变采样率的目的;通过对时域、频域波形的分析,来仔细体会多采样率变化前后所分析信号的时域和频域演化过程。
2 多采样率信号处理系统应用举例
2.1 采样功能的实现与分析
点击图2主界面中的“采样演示”按钮,可进入如图3所示的采样演示二级界面,从中可以观察原始连续信号、采样信号及其对应的频域波形变化,同时可选择底部的按钮来分别观察满足采样定理、临界采样或采样混叠时的情况。
图3采样功能的实现与分析界面
图3中给出的是满足采样定理(采样率:Fs>2Fmax)时的情况。点击原始信号,左上子图显示周期为20 Hz的三角波信号时域波形,左下子图显示的是该信号的频域波形;右上子图显示的是对原始信号以Fs(120 Hz)进行采样且采样率Fs>2Fmax的波形,每个周期采6个点;右下子图显示的是采样信号的频域波形,可看出在Fs>2Fmax时,采样频谱产生了周期延拓,频谱幅度下降。
2.2 多采样率功能的实现与分析
点击图2主界面中的“多采样率演示”按钮,可进入如图4所示的多采样率演示二级界面,从中可以观察原始序列、多采样率变化序列及其对应的频域波形变化,可选择底部的按钮来分别观察2倍抽取、3倍插值、抽取混叠和1.5倍有理因子采样变换的情况。
图4 多采样率变换功能的实现与分析界面
上图给出的是3倍插值时的情况。点击3倍插值按钮,左上子图显示的是周期N=16的原始三角波序列,左下子图显示的是该原始序列的频谱;右上子图显示的是对原始序列3倍插值后的三角波序列,此时每个周期的序列点数变为原来的3倍;右下子图显示的是插值后三角波序列的频谱,插值后的序列频谱形状与原序列频谱保持一致,在频谱轴上被压缩,幅值变为原来的3倍。
2.3 语音信号的多采样率变换演示
点击图2主界面中的“应用举例演示”按钮,可进入如图5所示的应用举例演示二级界面,从中可以观察针对某一语音信号的多采样率(0.1倍、0.5倍、2.5倍、4倍、7.5倍和10倍)变换的情况。
图5语音信号多采样率变换的实现与分析界面
图5中给出的是4倍采样率转换时的情况。点击“读取信号”会播放原始语音,左上子图为读取的原始语音信号的时域波形,左下子图为该语音信号的频域图;点击“4倍采样率转换”会播放产生对应变化的语音,右上子图为采样率变为原来4倍时候的时域波形,右下子图是其对应的频域图;可以看出,采样率变为原来的4倍时,时域波形比原始时域波形要更密集,而频域图中的频谱波形保持不变,但幅值变为原来的4倍,频率轴上频谱被压缩。
“应用举例演示”模块部分的最大特点是,点击对应的“读取信号”时会播放原始语音,点击多采样率变换(如0.1倍、0.5倍、2.5倍等)按钮时,亦会播放产生了采样率变换后的语音效果,这样可以结合多采样率变化前后信号的时域和频域演化过程进行直观的分析。
3 结语
本文结合多采样率数字信号处理的教学特点,完成了基于C++与Matlab混合编程的多采样率数字信号处理仿真系统设计,并通过采样功能、多采样率功能和语音信号的多采样率变换功能的应用举例,阐述了该仿真系统的实际应用。本仿真系统已在“数字信号处理”课堂教学和实验教学中使用,取得了较好的教学效果。
[1] 刘泉,阙大顺,郭志强.数字信号处理原理与应用(第2版)[M] .北京:电子工业出版社,2009.
[2] 张萌,武攀.基于Matlab的多采样率信号处理教学设计[J] .南京:电气电子教学学报,2009(4).
[3] 刘维.精通Matlab与C/C++混合程序设计(第3版)[M] .北京:北京航空航天大学版社,2012.