基于Matlab的雷达系统仿真软件包设计与实现

时间:2022-10-18 03:11:18

基于Matlab的雷达系统仿真软件包设计与实现

摘 要:针对雷达系统抽象复杂的特征,利用Matlab的图形用户界面开发设计出一套包含密码登陆界面、雷达系统主界面和各子界面的软件包,以方便教师教学和学生自学。在实现过程中引入Matlab,VC混合编程方法,以充分利用两种语言的各自优势。在VC环境下编写mexrun函数并通过混合编程生成MEX文件,编译后产生的动态链接库文件可以供Matlab调用。在Matlab平台的实验界面设计中提高了软件运行效率,精简了程序代码。运行结果表明,该软件包具有友好的用户界面、详细的雷达系统分析实例和强大的人机交互功能。关键词:雷达系统; Matlab; 混合编程; GUI; MEX

中图分类号:TN955-34文献标识码:A

文章编号:1004-373X(2010)16-0023-03

Design and Implementation of Radar System Simulation Software Package Based on Matlab

CHEN Hong-fei, WANG Ying, DUAN Liu-yun, YIN Zhong, ZONG Jie-bao

(School of Electronic Information, Whuhan University, Whuhan 430072, China)

Abstract: Considering the abstract and complex characteristics of radar systems, a radar system simulation software package including the password login interface, the main interface and the various sub-interfaces of radar systems is developed and designed with the graphical user interface of Matlab to facilitate teachers′ teaching and students′ self-learning. Matlab and VC hybrid programming approach are introduced in the implementation process to make full use of their advantages. A Mexrun function is compiled in the VC environment, the MEX file is generated through the hybrid programming, and then the dynamic link library files generated after compiling can be provided for Matlab′s call. The efficiency of the software running was improved and the program code was streamlined in the experimental interface design on MSTLAB platform. The running results show that the simulation software has friendly user interfaces, detailed examples of the radar system analysis and powerful human-computer interaction function.Keywords:radar system; Matlab; VC; hybrid programming; GUI; MEX

0 引 言

近些年来国际上相继发展了一些雷达仿真系统[1-2],而国内相控阵雷达系统和脉冲压缩雷达系统仿真软件的研究已经成为一个热点[3-5]。对于一个复杂的雷达系统,系统建模与仿真技术是雷达系统设计和研究的一个重要方向和发展趋势[6]。这些仿真软件系统主要是为工程设计人员服务的,具有较高的实用参考价值。基于此,本文参考了上述雷达系统的仿真思想,利用Matlab图形用户界面开发出一套供学生自学、教师教学的雷达系统分析辅助教学软件包。该软件包主要立足于教学自学辅助软件,供学习者高效理解和掌握雷达系统分析的相关知识。

在各种教学实验软件中,往往只限于Matlab的编程实现,而在贴近学习者需求和多媒体学习中尚有不足之处[7-8]。Matlab具有非常强大的数值计算、数据分析处理等功能,然而Matlab 程序是一种解释执行程序,不用编译等预处理,导致程序运行速度较慢。VC具有很高的编码效率, 可对操作系统和应用程序以及硬件进行直接操作[9-10]。因此,该软件包利用Matlab和VC混合编程,提高了代码的运行效率,发挥了两种语言的长处。运行结果表明,该软件包具有良好的人机交互功能、较高的软件运行速率和丰富的多媒体学习方式。

1 利用VC和Matlab混合编程实现MEX文件

在Matlab和VC混合编程中,它们可分为在Matlab中调用VC程序和在VC中调用Matlab两个方面。前者旨在弥补Matlab程序所不能实现的软件功能或者解决Matlab运行速度过慢的缺陷;后者一般是为了在VC环境下调用Matlab程序,充分利用Matlab在矩阵计算、数据分析方面的强大优势。

在Matlab 与VC混合编程之前,首先要对Matlab的编译应用程序mex 和编译器mbuild 进行正确的设置。对MEX编译器进行设置并生成配置文件即一个后缀为bat的批处理文件,它是通过在Matlab命令窗口输入命令:mex-setup,然后按照输出信息提示选择编译器和路径实现的。Matlab调用VC的方式主要有两种:利用MEX技术和VC动态链接库。本文通过调用VC动态链接库来编写mexrun文件。实际上,在Matlab环境中就可以方便地编辑MEX文件,但对于大型的MEX程序,可能会比较复杂,容易出错,这时就可以利用Visual C++强大的调试功能。图1给出在VC环境中建立MEX文件的过程。

图1 VC中建立MEX文件过程

Matlab提供了对动态链接库DLL文件的接口,且其接口支持VC编写的DLL文件,因此在对m文件进行编译后会产生一个与mexrun.cpp同名的mexrun.dll动态链接库文件。这样在Matlab的m文件中就可以直接回调mexrun()函数。通过VC来编写mexrun文件是因为需要在Matlab中直接运行诸如MP3,MP4,CHM和TXT等格式的文件,而用Matlab本身来实现这一过程的执行效率较低,代码具有重复性,对每种格式还需要区别对待。因而,考虑到VC语言和操作系统及硬件之间的直接联系,通过VC来编写程序并提供给Matlab调用,无疑会提高运行效率。

在mexrun.cpp文件中需要包含如下头文件:

#include //字符串类头文件

#include //系统头文件

#include //针对各种类型运行文件的头文件

#include "mex.h"//适用于混合编程的MEX头文件

C语言的MEX文件源程序主要由两个部分组成:第一部分是算法程序,用于完成实际工作;另一部分是入口子程序,它是算法程序与Matlab的接口。入口子程序实现接口功能是通过在输入指针数组中获得算法程序所需的数据,同时也能把计算结果返回到输出指针数组。在这里mexFunction有着输入/输出与变量转换的作用[11]。参照本文编写的mexrun.cpp文件,需要注意以下几点:

(1) void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray*prhs[])。函数头中nlhs 是Matlab 命令行方式下输出参数的个数;*plhs[]是一个mxArray结构体类型指向所有输出参数的指针数组;*prhs[]也是是一个mxArray结构体类型指向所有输入参数的指针数组;nrhs是输入参数的个数。

(2) 还需定义以下几个变量:char *inputarg1,*inputarg2;int len1,len2,status1,status2。其中:*inputarg1,*inputarg2是两个字符指针;len1,len2表示分配空间长度;status1,status2是两个数据空间变量。

(3) 输入的必须是单行字符串,行矢量,如下:

if(mxIsChar(prhs[1])!=1)/* 检查输入参数的类型 */

mexErrMsgTxt("Input must be string.");/* 输入的必须是单行字符串*/

if(mxGetM(prhs[1])!=1)

mexErrMsgTxt("Input must be a row vector.");/* 输入的必须是行矢量*/

(4) 把输入的字符串拷贝到C字符串里面,如下所示:

status1=mxGetString(prhs[0],inputarg1,len1);

status2=0;

if(nrhs==2)

status2=mxGetString(prhs[1],inputarg2,len2);

if (status1status2)

mexWarnMsgTxt("Not enough space.String is truncated.");

if(nrhs==1)

MyShell(inputarg1,"nowait");

else

MyShell(inputarg1,inputarg2);

按照上述流程设置好编译环境和源程序后就可以编译此工程,编译成功后,在debug文件夹中会生成mexrun.dll链接库文件。实验结果表明,只要把mexrun.dll链接库文件放在Matlab的当前工作区中,就可以在GUI设计中的m文件编写中直接调用。

2 系统模块的设计与实现

雷达系统软件包的总体结构采用分离式的多模块结构,即各功能模块彼此相互独立,分别完成一定的功能。从方便用户的角度出发,设计的雷达系统软件包采用多层次的分级菜单驱动形式,先由主菜单选择进入各功能模块的子菜单,在每一个功能模块的菜单下,可以选择参数设置、程序运行、获取帮助和返回上级菜单等操作。

2.1 系统实现方法

图形用户界面(graphical user interfaces,GUI)是用户与计算机进行信息交流的方式。计算机在屏幕显示图形和文本,用户通过输入设备如键盘、鼠标等与计算机通信。GUI中包含各种控件,通过对控件设置┮恍┆事件响应函数,这些函数可以在控件创建或删除等事件发生时执行,从而实现特定事件触发下需要的某些功能。这些事件响应函数即是句柄图形对象的回调函数。

本文使用GUIDE界面来对各种控件进行布局,并利用属性编辑器对每个控件进行设置。软件包的实验界面主要有登陆界面、主界面和各部分子界面。下面以登陆界面为例,说明图形用户界面的设计过程。

2.2 登陆界面设置

图2表示GUIDE界面下对登录界面进行设置,其中包含了按钮、静态文本框、编辑框和坐标轴。在对每种控件的属性编辑器进行编辑时,Matlab对于每个控件都会在其相应的m文件中初始化出一个回调函数。

图2 登陆界面

首先,可以通过调用混合编程实现的mexrun.dll库文件打开help文档、MP3文件和MP4文件。以video按钮为例,打开它的属性编辑器可以看到其对应的Tag属性pushbutton1,在其回调函数中加入如下代码。video按钮打开后是关于软件包使用说明的一段简单视频。

function pushbutton1Callback(hObject,eventdata,handles)

mexrun(′introduction.MP4′);

其次,编写坐标轴控件的属性和构造函数,这里的坐标轴函数是用来显示一张JPEG格式的静态图片。Matlab提供imread()函数和imshow()函数来读取和存放静态图片,函数中的X是一个矩阵。

function axes1CreateFcn(hObject,eventdata,handles)

X=imread(′radar.jpg′);

imshow(X);

最后,关于登陆界面的密码设置,需要对OpeningFcn函数进行初始化设置,也即是软件包默认的用户账号和密码。这里需要使用函数set()来设置编辑框中输入的字符串即用户账号和密码,并对该账户和密码进行初始化赋值。

handles.output=hObject;

set(handles.kehucode,′String′,″);

set(handles.kehuuser,′String′,″);

handles.xinghao=″;

handles.user=′Dorothy′;%预先设定的登录账号

handles.code=′19901125′;%预先设定的登录密码

guidata(hObject,handles);%保存对handles和hObject的操作

3 仿真结果

雷达系统分析包含各个部分仿真结果分析,这里选择雷达天线中典型的线性天线阵列仿真结果进行分析。仿真界面实例如图3所示,这里选择的实例是线性天线阵列的增益方向图。其中,阵列中的单元数为19,可以看到当单元间距为1.5个波长、扫描角度为-38°、使用Hamming窗进行幅度加权、并用23量化电平时,相应地在-38°处有主瓣产生,并且第┮桓豹瓣的电平约为-13.4 dB。若在面板中选择不同的设置值,则可以得到在不同的阵列天线(即阵列中的单元数不同或单元间距不同)、不同的扫描角度、不同的加窗函数、不同量化电平时的增益方向图。

图3 线性天线阵列的方向图

通过该系统进行模拟仿真,并将仿真结果进行对比,可以清晰地了解天线在各个转向角处的增益方向是如何随天线阵列的单元间距、扫描角度、加窗函数、量化电平这些参量的变化而变化的,从而形成对线性阵列天线增益方向图的直观感受。

4 结 语

雷达系统分析课程理论性强,抽象难懂,如何帮助学习者理解课程中的基本概念、基本分析方法等是该课程教学中所要解决的关键问题。考虑到Matlab的图形用户界面非常形象,本文采用VC和Matlab混合编程充分发扬了两种语言的优势,开发实现了该课程教学实验GUI软件包。实验表明,该雷达系统仿真软件包界面友好,参数设置灵活,并且在仿真的过程中能随时看到雷达信号发射、接收和信号处理等各方面的文字或图形描述。

参考文献

[1]SEVGI L, SANAL A S. Surface wave HF radar simulator[C]//Radar Conference. Edinburgh: SPEC, 1997: 181-184.

[2]PALMER J, HOMER J, MARTORELLA M, et al. Target height estimation in an emulated bistatic radar via interferometric processing[C]//2005 1st IEEE International Workshop on Computational Advances in Multi-sensor Adaptive Processing.[S.l.]: IEEE, 2005: 20-23.

[3]杨立柱,郭英,齐立峰.脉冲压缩雷达系统分析与仿真研究[J].现代防御技术,2007,35(3):90-94.

[4]李钦富,许小剑.相控阵雷达系统仿真模型研究[J].中国电子科学研究院学报,2007(2):239-243.

[5]康蓬,赵正予,倪彬彬.人工扰动电离层仿真系统的设计与实现[J].武汉大学学报:理学版,2006,52(1):119-123.

[6]董英凝,张宁.高频地波雷达系统性能仿真软件的设计与实现[J].现代雷达,2009,31(10):30-34.

[7]李强,明艳,陈前斌,等.基于Matlab的数字信号处理实验仿真系统的实现[J].实验技术与管理,2006,23(5):81-83.

[8]沈捷,王莉.数字信号处理教学实验软件包的GUI设计与实现[J].实验技术与管理,2008,25(2):88-91.

[9]戢小亮.基于Matlab和VC混合编程的数字信号处理的实现[J].现代电子技术,2007,30(15):107-108.

[10]潘大夫,汪渤,周志强.Matlab与C/C++混合编程技术研究[J].计算机工程与设计,2009,30(2):465-468.

上一篇:VB编程实现微机的网络远程唤醒 下一篇:基于LPC2478与ADS7843的工业触摸屏设计