曲长文,周 强,苏 峰,彭书娟
(海军航空大学,山东 烟台 264001)
信号检测与估计[1]是研究从噪声环境中检测出信号,并估计信号参量或信号波形的理论,是现代信息理论的一个重要分支,广泛应用于电子信息系统、自动控制、模式识别、射电天文学、气象学、地震学、生物医学工程及航空航天系统工程等领域。
信号检测与估计是随机信号统计处理的理论和方法,是以数理统计中贝叶斯统计决策的理论和方法研究随机信号的检测和估计问题。它与概率论、数理统计及随机信号分析(或随机过程)并驾齐驱地支撑着随机现象规律的研究,它们共同构成了科技工作者研究随机现象的完整知识结构。信号检测与估计是“信息与通信工程”学科的重要基础课,是电子信息工程、通信工程、电子信息科学与技术及电子科学与技术等专业的基础选修课。
信号检测与估计课程理论性强、概念抽象、数学公式庞杂,理论推导的繁多掩盖了信号处理的过程。再加上学生的统计观念不够强,对思考问题的方式不适应,缺乏用统计方法去分析问题、解决问题的能力,从而导致学生在基本理论的理解上存在一定的困难,学生对所学内容似懂非懂,概念模糊,适用范围混淆,不能应用所学知识很好地解决实际问题。形成这种情况的原因较多,但其中一个重要的原因是:教学过程偏重概念的讲解、重定理的证明及公式的运用等方面,却忽略了对其实用性方面的实践教学。
为了解决信号检测与估计教学中实践教学偏弱的问题,设计开发用于辅助教学、开展实验和课后自学的信号检测与估计仿真软件是十分必要的。
信号检测与估计仿真软件作为课堂教学演示软件,解决了课堂教学仅限于理论讲解的困境,使课堂教学生动而丰富,使理论分析与应用高度融合,改变了形式单一的教学模式。该软件作为实验仿真平台,使信号检测与估计的实验教学[2-6]不受时间和场所的限制,解决了该课程学时少和开展实验教学的矛盾。该软件作为课后自学辅助软件,丰富了学生课后自学的手段,使课后作业与应用密切结合,调动了学生的学习积极性。因此,该软件为提高信号检测与估计课程的教学效果奠定了基础,对于提高教学质量是十分必要的。
MATLAB是由美国Math Works公司发布的主要面对科学计算、可视化以及交互式程序设计的科技计算环境[7-8]。其强大的运算功能、绘图功能和图形用户界面(graphical user interface,GUI)设计功能[9-13],使之成为设计开发交互式辅助教学软件的有力工具。它还具有将程序编译成exe独立可执行程序的功能,方便程序的发布与共享。
信号检测与估计仿真软件采用模块化结构的软件设计方法,利用MATLAB开发平台,编写信号检测与估计内容的程序,模拟信号的产生、检测与估计过程、性能评价,并将MATLAB程序编译成exe独立可执行程序,最后利用安装包制作工具打包生成安装软件。
信号检测与估计的内容主要包括匹配滤波、信号检测及信号估计3个方面。信号检测包括参量检测和非参量检测;信号估计包括信号参量估计和信号波形估计。
根据信号检测与估计的内容,仿真软件包括主控模块、调度模块、匹配滤波器模块、信号检测模块、信号估计模块、帮助模块和编程说明模块7个模块,如图1所示。
图1 信号检测与估计仿真软件结构框图
主控模块是用户操作软件的界面,其主要功能是接收用户传来的操作信息,并根据用户操作信息通过调度模块调用匹配滤波器模块、信号检测模块、信号估计模块、帮助模块和编程说明模块。它包括信号检测与估计仿真软件开始界面、主界面、结束界面、匹配滤波器界面、信号检测界面、参量检测界面、参量检测仿真界面、理论检测特性曲线界面、序列检测界面、非参量检测界面、信号估计界面、信号参量估计界面、信号波形估计界面、维纳滤波界面和卡尔曼滤波界面。
调度模块是主控模块与匹配滤波器模块、信号检测模块、信号估计模块、帮助模块和编程说明模块,以及模块与子模块之间调用的程序模块,其主要功能是根据主控模块接收的用户操作信息,调用各种模块与子模块。
1)匹配滤波器模块包括矩形脉冲匹配滤波器、正弦信号匹配滤波器、线性调频信号匹配滤波器3个子模块。
2)信号检测模块包括参量检测和非参量检测2个子模块。参量检测模块包括参量检测仿真、理论检测特性曲线和序列检测3个子模块;非参量检测模块包括符号检测和秩检测2个子模块。
3)信号估计模块包括信号参量估计和信号波形估计2个子模块。信号参量估计模块包括正弦信号参量最大似然估计的多次模拟试验、正弦信号参量最大似然估计的样本数变化试验、匀加速直线运动参数的最大似然估计、正弦信号的线性最小均方误差估计、匀加速直线运动参数的最小二乘估计、正弦信号的最小二乘估计6个子模块;信号波形估计模块包括维纳滤波和卡尔曼滤波2个子模块。
4)帮助模块包括软件说明书和帮助2个文件。
5)编程说明模块只包括编程说明文件。
为了使仿真内容与课程内容一致,信号检测与估计仿真软件在采用模块化结构的基础上,采用层次结构设计,以利于辅助教学。该软件的各类用户界面采用GUI设计,使操作界面友好,方便反复操作,提高辅助教学的交互效果。
采用WinCHM软件制作chm格式的帮助文件和编程说明文件,使在使用仿真软件的过程中可以非常方便地讲解或查阅相应的基本概念、原理、公式、编程说明及使用说明,从而达到辅助教学的目的。
软件的实现按以下顺序依次完成:主要功能模块—主控模块—调度模块—帮助和编程说明模块—软件封装。
主要功能模块是指体现信号检测与估计内容的匹配滤波器模块、信号检测模块和信号估计模块。主要功能模块中各子模块的内容和分析过程不同,但其设计思路和一般实现方法基本类似。
2.1.1 匹配滤波器
在输入为确定信号加平稳噪声的情况下,使输出信噪比达到最大的线性系统称为匹配滤波器。
假设确定信号加平稳噪声的输入信号模型为:
x(t)=s(t)+n(t)
(1)
式中,s(t)为确定信号,并存在于时间间隔[0,T]内;n(t)为平稳噪声,其均值为0,自相关函数为Rn(τ)。
设h0(t)是匹配滤波器的冲激响应,则匹配滤波器方程为:
(2)
匹配滤波器的最大输出信噪比为:
(3)
设白噪声的功率谱密度为Sn(ω)=N0/2,自相关函数为Rn(τ)=(N0/2)δ(τ)。则匹配滤波器冲激响应为:
(4)
输出信噪比为:
(5)
式中,E为输入信号能量。
白噪声背景下匹配滤波器在时刻T的输出为:
(6)
匹配滤波器传输函数为:
(7)
式中,K=2/N0。
2.1.2 信号检测
设高斯白噪声中二元确知信号的两种假设为:
(8)
设观测信号x(t)的似然函数为:
(9)
(10)
式中,F为一常数。
观测信号x(t)的似然比为:
(11)
似然比检测判决式为:
(12)
式中,Λ0为似然比门限,取决于所选用的最佳准则。
经化简,似然比检测判决式又可写为:
(13)
式中,β为判决门限,其表示式为:
(14)
虚警概率为:
(15)
检测概率为:
(16)
2.1.3 信号估计
设信息传输系统中发送设备发送的信号为s(t,θ),信道的加性噪声为n(t),在观测时间(0,T)内,接收设备的接收信号为:
x(t)=s(t,θ)+n(t),0≤t≤T
(17)
式中,θ为单个被估计参量。信道噪声n(t)为零均值高斯白噪声。
最大似然估计方程为:
(18)
由于主要功能模块的内容多、分类层次多,首先需要按照分类层次,将主要功能模块的内容分解到最底层的功能模块。例如,卡尔曼滤波模块属于信号波形估计模块,而信号波形估计模块属于信号估计模块。卡尔曼滤波模块功能包括用卡尔曼滤波估计室内温度、用卡尔曼滤波估计AR(4)模型信号、用卡尔曼滤波估计二维匀加速运动目标的状态3个子模块。估计室内温度用标量卡尔曼滤波;估计AR(4)模型信号和二维匀加速运动目标的状态用向量卡尔曼滤波。其次,根据各个最底层功能模块的原理,编写相应MATLAB程序并调试成功。最后,设计并生成GUI程序,并将最底层功能模块的程序嵌入到GUI程序的回调函数callback中,从而实现最底层功能模块的GUI程序。
MATLAB的GUI设计方法有使用图形界面设计环境(GUIDE)和通过m文件编程建立GUI两种。
GUIDE是可视化快速的生成GUI界面的编辑工具,极大地简化了GUI设计和生成的过程,适合交互性要求高和易反复操作运行的最底层功能模块的GUI设计和生成。如利用GUIDE设计生成的用卡尔曼滤波估计室内温度的GUI交互式操作界面,如图2所示。
图2 用卡尔曼滤波估计室内温度界面
主控模块主要是接收用户传来的操作信息,通过调度模块调用其他模块。它主要是调用其他模块及其层次关系和最底层功能模块的图形界面,不需要反复改变输入参数和输出结果,只需要操作方便的调用关系。因此,主控模块所包含的操作界面采用m文件编程的方法来设计生成GUI。通过m文件编程建立GUI,只需要m文件,不需要fig文件,修改方便,易于嵌入外部图片,使图形界面美观。如利用m文件编程方法设计生成的信号检测与估计仿真软件主界面,如图3所示。
图3 信号检测与估计仿真软件主界面
为了减少模块之间的相互影响,修改、升级和调试方便,使各个模块保持高度的独立性,各个模块之间的相互调用和关闭通过专用的调用程序来完成,所有的调用程序组成调度模块。编写调用程序需要注意GUI、函数及控件之间的数据传递,否则会引起调用失败或数据传递不正确。在数据传递时,尽量少用全局变量,全局变量会破坏程序的封装性。在所有模块中,尽可能保证变量名称的唯一性,用完的变量尽可能释放。需要注意MATLAB对图形对象变量的定义方式和层次关系,否则关闭图形或窗口时会出现紊乱。
帮助和编程说明模块是方便有效使用仿真软件和提高辅助教学效果的保障,其特点应该是条目清晰、方便调用和查找其中的内容,故采用chm格式的帮助文件和编程说明文件。将仿真软件的使用、相关原理和编程说明等内容按照分类和层次关系,使用Microsoft Office Word软件形成相应的htm格式文档。然后,采用WinCHM软件将htm格式的文档导入并构建成chm格式的帮助文件和编程说明文件。
将MATLAB程序编译成exe独立可执行程序,可以用MATLAB自带的Lcc编译器,也可使用VC++6.0编译器或其他版本VC++编译器。
将MATLAB程序编译成exe独立可执行程序的方法有两种:一种是使用Deployment工具(在MATLAB的命令窗口中输入deploytool即可调出该工具);另一种是使用编译命令mcc。在此以编译命令mcc方法为例说明。
设置对MATLAB程序进行编译的编译器:
在MATLAB的命令窗口中输入:mbuild-setup;根据提示选择合适的编译器。
对MATLAB程序进行编译并生成exe程序:
在MATLAB的命令窗口中输入:mcc-e a_export.m;并在当前路径下,编译生成若干C/C++源码及exe程序。
在确保生成的exe程序可以运行的情况下,将生成的exe程序、MCRInstaller.exe、帮助文档及软件说明书等相关资源文件用安装包制作工具(如setup factory)打包,生成一个安装文件,向外发布。
在没有MATLAB的计算机上,需要先安装MCRInstaller.exe软件,才可以运行生成的exe程序。运行MCRInstaller.exe软件的目的是安装MATLAB运行环境。如果计算机上MATLAB的版本与生成exe程序的版本不同,也需要先安装该软件。此软件可以在MATLAB的安装目录里搜索到。
信号检测与估计仿真软件用于辅助教学,可以使教学内容更加直观,统计处理过程形象化,从而加深学生对理论知识的理解,提高教学效率;仿真软件的交互式操作特点,使学生融入解决实际问题中,可以激发学生学习兴趣和主动性,促进学生对理论知识的掌握,加强统计观念的培养,提高教学质量。信号检测与估计仿真软件不仅有助于信号检测与估计课程的教学,提高教学效率和质量,更有助于促进学生素质的培养,提高解决实际问题的能力和自主创新能力。