两种实现海面舰船SAR成像模拟的编程语言对比分析∗

2019-03-01 02:52祝明波梁佐堂
计算机与数字工程 2019年1期
关键词:编程语言C语言舰船

郭 涛 祝明波 陈 麒 梁佐堂

(1.海军航空大学电子信息工程系 烟台 264001)(2.海军航空大学研究生管理大队 烟台 264001)

1 引言

合成孔径雷达(Synthetic Aperture Radar,SAR)具有全天时、全天候的观测能力,对于海洋环境监测、航海安全、渔业管理以及海面目标的检测、监视与识别等方面的研究发挥着重要作用[1~3]。但是,SAR系统受到各种因素的制约,如探测环境、系统参数、目标特性变化等,无法获取满足任意条件下的实测数据,且测试代价大、可扩展性和数据灵活性差[4]。对海面舰船目标进行成像模拟解决了SAR系统无法获取任意条件下海面舰船SAR图像的问题,在海上目标识别、判读人员训练、SAR系统设计优化与性能评估等应用中充分发挥其优势。

本文采用基于回波信号的模拟方法对海面舰船进行SAR成像仿真。介绍了海面舰船SAR成像信号级模拟流程,分析其数据运算的特点。分别基于Microsoft Visual C++(以下简称VC++)与Matlab两种开发环境,利用C和Matlab两种编程语言实现海面舰船SAR成像仿真,对这两种编程方法进行对比研究。

2 海面舰船SAR成像信号级模拟流程

为实现海面舰船SAR成像信号级模拟,需构建精细的舰船和时变动态海面三维复合模型,进行面元的划分;分析电磁波与随时间演进的海面及舰船之间的相互作用机理,通过电磁计算方法得到海面和舰船的电磁散射模型;分析海面与舰船复杂的电磁耦合机制引起的多径效应,构建多径效应模型;对复合模型进行消隐处理,计算得到复合模型的后向散射系数;根据系统参数进行SAR回波模拟,生成原始回波信号;通过成像算法处理回波数据,获得SAR仿真图像,实现海面舰船SAR成像信号级模拟[5~6]。其流程如图1所示。

图1 海面舰船SAR成像信号级模拟流程图

本文中,海面模型采用双线性叠加法建立,其海谱模型采用双尺度模型。其波面高度表示为

式中,ζ(x,y,t)为(x,y)位置在t时刻的波点高度,aij为振幅,ki为波数,θj为波向,ωi为角频率,εij为初始相位。波数与角频率的关系由色散公式确定。振幅满足瑞利分布,可由双尺度海谱模型来计算。

对海面舰船模型进行遮挡判断时,采用Z-Buffer算法,比较同一电磁波射线上所穿过的面元同雷达的距离值,做阴影判断。因此,需要遍历所有面元进行比较计算。利用物理光学法和电磁散射计算得到各个面元的后向散射系数后,生成模拟回波。设方位向采样点有M个,每个采样点内在距离向上发射N个脉冲串,对K个理想点目标进行采样后,其回波数据为一M×N矩阵。回波离散后可表示为:

式中Sr为回波矩阵,σ为目标模型的后向散射系数矩阵,C为电磁波传播速度,λ为电磁波波长,Tr为脉冲持续时间,Tsar为合成孔径时间。R、x(k)分别为目标面元到雷达的斜距和在参考坐标系中方位向坐标。

由此可见,海面舰船SAR成像模拟的数据类型大部分是浮点型,数据的运算大部分为大规模的矩阵运算以及多层循环计算,其中矩阵运算主要是点乘以及求和运算。因此,其数据运算的特点属于循环和浮点运算密集型。

3 开发环境简介

由于海面舰船SAR成像模拟中含有大量矩阵运算,因此,常常利用以矩阵为运算基本单元的Matlab平台实现成像仿真。而对于软件的开发,则往往采用VC++集成开发环境,这样能够提高应用程序的设计效率,便于软件的维护、升级。此外,VC++的代码执行效率比Matlab高。

3.1 Matlab简介

Matlab是由Mathworks软件开发公司设计的一款计算软件,其运算的基本数据元素是没有维数限制的阵列,使得用户可以解决许多包含了矩阵和向量的公式计算的工程技术上的问题[7~9]。它主要面对科学计算、可视化以及交互式程序设计的计算环境[10]。其Matlab语言是一种解释性语言,语法规则简单、容易掌握、调试方便,具有强大、便捷的数学运算和图形、图像处理功能。

3.2 Microsoft Visual C++简介

Microsoft Visual C++是Microsoft公司推出的C++开发工具,具有集成开发环境,可以提供C、C++以及C++/CLI等编程语言。它包括Microsoft的代码优化技术、强大的GUI功能和复杂的资源编辑器,应用程序的设计效率高,开发系统执行速度快,实时性好。具有接口友好、易维护和升级等优点[11~13]。但是相对于 Matlab 缺乏对大量数据处理和分析、数据可视化分析方面的能力[14]。

4 两种编程语言对比

Visual Studio 2010是由微软公司研发的一套基于组件的开发工具构成,是一套完整的开发工具。将Visual Basic、Visual C#和Visual C++集成到了同一开发环境[15~17]。安装完 Visual Studio 2010后,在第一次运行中即可选择VC++开发设置,即可进入VC++开发环境。本文中所进行的测试,均在CORSAIR 900D上进行,操作系统为Windows7旗舰版64bit、内存8GB、处理器为Intel(R)Xeon(R)CPU E3-1230 v3@3.30GHz。测试的软件平台为Matlab R2014和Visual Studio 2010。

4.1 Matlab与C执行效率对比

通过第2节分析可知,海面舰船SAR成像模拟的数据类型大部分是浮点型,且运算中含有大量循环。因此,通过式(3)来对Matlab和C执行效率进行比较。

上述公式中,循环次数N随之n指数增大,每次循环进行一次浮点运算,并不涉及大容量内存的存取,适合测试程序的浮点运算速度和执行循环的效率。测试结果如表1所示。

表1 Matlab与C执行效率对比

计算平均耗时数据时,取算法中的n=25。由上表数据可得,C语言在浮点运算和循环次数多的算法中代码的执行效率比Matlab高,大约是Matlab的4.35倍。

4.2 点目标SAR成像仿真

根据SAR成像工作原理,通过Matlab和C语言编写实现点目标的回波仿真,随着点目标的数量的增加,比较两种编程语言在点目标进行SAR成像仿真时的执行效率。其耗时结果如图2所示。

图2 点目标仿真下Matlab与C的耗时对比

由上图可知,随着成像区域点目标个数的增加,点目标成像仿真的时间呈线性增长。由C语言编写实现点目标SAR成像仿真的代码执行效率相对于Matlab所编写的要高,且目标点数越多,C语言实时性好的优势越明显。

4.3 海面舰船SAR成像仿真

本文利用3DMAX软件构建舰船模型,同由双尺度模型生成的海面模型复合成目标模型;对目标模型进行遮挡判断、消隐处理;利用物理光学法求解目标模型的后向散射系数;配置SAR系统参数,生成模拟回波,通过成像算法处理回波获得SAR图像。其计算量主要在海面生成、舰船与海面复合模型的遮挡判断以及回波生成这几个方面。因此,将从这三个方面出发,对Matlab与C的耗时进行对比实验。仿真的海面场景大小为200m×300m,仿真的像素点数为512×1024个,其结果如表2所示。

表2 海面舰船SAR成像仿真两种语言耗时对比

由表中数据可知,海面舰船SAR成像仿真过程中消隐处理和回波生成耗时多,占总仿真时间约98%。并且在海面生成、消隐处理实现及回波计算上C语言执行效率明显占优势。在海面舰船SAR成像仿真的总耗时上,C语言编程大约是Matlab编程的5.70%。

在本节分别从执行效率上、点目标SAR成像仿真和海面舰船SAR成像仿真三个层次,对Matlab与C两种编程语言进行了仿真实验,对比分析得出结论。基于VC++开发环境实现海面舰船SAR成像仿真的执行效率比Matlab高,C语言实现的海面舰船SAR成像仿真比Matlab所实现的实时性更好。

5 结语

本文介绍并分析了信号级海面舰船SAR仿真的过程以及数据运算特点,介绍了Matlab和VC++开发环境。通过Matlab和C编程实现了信号级海面舰船SAR成像仿真。经过仿真实验对比分析,得出结论。

基于Matlab实现海面舰船SAR成像模拟,有以下几方面优势。

1)数据结构。Matlab的基本数据结构是矩阵,对矩阵具有强大处理能力,而SAR成像模拟的计算过程大部分是对矩阵进行运算,因此,相对于采用只支持标量和非交互式的编程语言(如C语言)实现起来更为方便。

2)丰富的数学函数库。Matlab中包含了大量的计算函数,如成像处理算法中所用的Fourier变换和Inverse Fourier变换等,可以方便编程实现一些复杂的数学表达式。

3)强大的图形图像处理功能。Matlab具有数据可视化和图像处理功能,为用户提供了非常丰富的用于数据可视化的函数,很好地满足了SAR成像模拟的结果数据可视化需求。

基于VC++实现海面舰船SAR成像模拟,有以下几方面优势。

1)代码的执行效率高。C语言是较低级的语言,程序生成的代码质量高,程序执行效率高,一般只比汇编程序生成的目标代码效率低10-20%。在同一量级的循环次数下,C比Matlab的代码执行效率要高。海面舰船SAR成像模拟中数据的运算存在多层的大量的循环,在实时性方面,C比Matlab有优势。

2)结构式的语言。C语言是结构式的语言,程序的各个部分除了必要的信息交流外彼此独立,使得程序层次清晰,便于使用、维护。

因此,对于SAR成像实时性要求较高的条件下,应该选择C语言编程。此外,基于VC++开发环境便于实现软件开发、维护、升级,但是在数据可视化实现上繁琐。而Matlab具有强大的图形图像处理功能,编程语言简单,容错性好,操作相对容易,对于SAR成像实时性要求不高的条件下,可以选择Matlab进行编程。

猜你喜欢
编程语言C语言舰船
舰船通信中的噪声消除研究
风浪干扰条件下舰船航向保持非线性控制系统
基于JavaScript编程语言之 闭包技术在焦点轮播上的应用
舰船测风传感器安装位置数值仿真
互联网+教育背景下的C语言程序设计教学改革探究
基于Visual Studio Code的C语言程序设计实践教学探索
计算机软件开发的JAVA编程语言及其实际应用分析
51单片机C语言入门方法
Java编程的现状与发展前景
浅谈不同编程语言对计算机软件开发的影响