常规雷达信号软件仿真平台设计

常规雷达信号软件仿真平台设计

雷达仿真技术经过三十多年的发展和研究,已经成为雷达研究和使用中必备的基础工具。雷达信号仿真是电子战威胁环境仿真的关键技术之一。本课题主要讨论的是雷达信号仿真部分,并结合一些常见的雷达信号处理系统的实例来说明Matlab软件在雷达信号处理系统仿真中的应用。

一、课题研究现状

计算机辅助分析和设计技术发展十分迅速,出现了大量实用仿真软件与工具,并应用于信号调制建模,分析和设计,使得信号调制仿真发展很快。计算机辅助技术基本上有两大类,一是基于公式的方法,用计算机计算复杂的公式;二是用计算机仿真系统的信号波形,即波形级仿真。
现代计算机软硬件技术的快速发展,新一代的可视化的仿真软件的使用使得信号调制仿真的设计和分析过程变得相对直观和便捷,推动了信号调制仿真的快速发展。

二、课题目的及意义

在硬件实验系统中,用各种电子元器件制作出信号调制中的理论模型所规定的各个模块,再把它们通过导线或电缆等接在一起,然后再用示波器、频谱议、误码仪等信号调制仪表做各种测量,最后分析测量结果。在软件实验中我们也是这样做,只不过所有信号调制模块及信号调制仪表的功能都是用程序来实现的,信号调制的全过程在计算机中仿真运行。
与硬件实验相比,软件实验具有如下一些优点:

  • 软件实验具有广泛的适应性和极好的灵活性。在硬件实验中改变系统参数也许意味着要重做硬件,而在软件实验中则是改一、两个数据,甚至只是在屏幕上按几下鼠标。
  • 软件实验更有助于我们较为全面地研究信号调制。有许多问题,通过硬件实验来研究可能非常困难,但在软件实验中却易于解决。
  • 硬件实验的精确度取决于元器件及工艺水平,软件实验的精度取决于CPU的运算速度或者说是程序的运算量。
  • 软件实验建设开发周期短,成本低。

三、课题任务

课题在研究了信号调制原理的基础上,结合战场上更复杂的环境,使用matlab编程软件编写了AM、FM、LFM、QPSK信号生成代码。模拟战场对雷达信号进行了加噪以及调制信号的相互混合处理,在实验过程中使用matlab编写了一个GUI界面展示对应的仿真结果。
该仿真设计基本满足以下设计要求:

  • 设计一个GUI界面,能仿真出一些常见的雷达信号,可以在界面上设置参数来仿真不同类型的信号。
  • 能够把任意的信号进行混合叠加,得到它们对应的时域图。
  • 可以在界面上加入白噪声,设计出不同信噪比下的信号以及相应的时域图。
  • 设计不同的脉冲间隔方式,包括固定间隔、逐步递进、正弦间隔等三种间隔方式。

四、课题问题及解决方案

  • 设计出任意条件的雷达信号参数:
    本课题以matlab的GUI界面展现,通过获取可编辑文本框的相关参数,以此生成任意参数的雷达信号,同时由于普通笔记本电脑内存有限,故生成的信号频率与采样时间不能过大。
  • 任意信号的叠加:
    在信号处理中经常需要把两信号相叠加以生成新的信号供实验使用,但是在叠加时两信号的采样频率可能会不一样,因此需要在两信号相加之前进行信号维度的校准,同时再叠加噪声时因为matlab在进行信号叠加时会有对于两信号采样频率之积要小于2^31的要求,同时雷达的信号采样频率一般较高,因此在直接进行采样频率校准时需将两信号采样频率拆成多个频率相乘即可。
  • 不同的PRI及不同抖动范围:
    本课题的PRI采用线性及正弦波形式,线性采用三角波形式,因为是以其抽样幅值为PRI,因相对于脉冲长度幅值较小,故在幅值后乘以基波的抽样频率。同时为了更加符合真实战场情况,加上一定的抖动范围,该抖动范围是可编辑文本框中读取,后在三角波或者正弦波抽样幅值进行更改。

五、雷达信号

matlab及仿真平台简介

Matlab简介:
MATLAB的名称源自Matrix Laboratory,它是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用MATLAB产品的开放式结构,可以非常容易地对MATLAB的功能进行扩充,从而在不断深化对问题认识的同时,完善MATLAB产品以提高产品自身的竞争能力。
MATLAB是MATLAB产品家族的基础,它提供了基本的数学算法,例如矩阵运算、数值分析算法,MATLAB集成了2D和3D图形功能,以完成相应数值可视化的工作,并且提供了一种交互式的高级编程语言一M语言,利用M语言可以通过编写脚本或者函数文件实现用户自己的算法。
句柄图形及用户图形界面:
句柄图形(Handle Graphics)就是将一个图形的每一个组件都视为一个对象(0bject),每一个对象都有一个独一无二的句柄(handle),根据这个句柄,就可以找到这个对象(即图形组件)的各项属性,并进而更改这些属性,以产生不同的图形呈现效果。
图形用户界面GUI(Graphics User Interface)是由各种图形对象,如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面,是人机交流信息的工具和方法,在该界面内,用户可以根据界面提示完成整个工程,却不必去了解工程内部是如何工作的。GUI设计即可以基本的MATLAB程序设计为主,也可以鼠标为主利用GUIDE工具进行设计。
利用GUIDE设计图形用户界面时,可通过GUI应用属性设置编辑器来设置对句柄操作的响应,findobj命令可以获得所需对象的句柄。
GUIDE:
GUIDE(Graphics User Interface Design Environment)是一个专用于GUI程序设计的快速开发环境,使用者通过鼠标就能迅速地产生各种GUI控件,并随心所欲地改变它们的外形、大小及颜色等,从而帮助用户方便地设计出各种符合要求的图形用户界面。调用GUIDE的方法有2种,在MATLAB命令窗口中输入guide命令,或在MATLAB主菜单中点击File→New→GUI即可打开一个可编辑的新窗口。
GUI 设计工具简介
GUI 设计面板是上述GUI设计工具应用的平台,如图所示,面板上部提供了菜单和常用工具按钮,左边提供了多种GUI控件,如按钮、单选按钮、复选框、文本框等。进行GUI设计时,首先单击GUI面板左边所需的控件,然后在右边的图形界面编辑区中再次单击某一恰当的位置,这时将在该位置上为图形界面添加一相应的控件,接下来,通过属性编辑器和对齐编辑器对各控件设置相关属性和进行界面布置,以完善界面功能。
GUI设计面板
完成控件的布局之后,也就完成了整个图形界面的结构设计,接下来则是最为重要的功能设计,即要编制菜单、控件的回调程序。若要编制某一控件的回调程序,用右键单击该控件,在弹出菜单中点击View Callbacks,然后从子菜单中选择一种激活回调程序的方式,就可以编制回调程序了,如Callback指单击控件时激活回调程序完成一定的功能。菜单的回调程序在菜单编辑器Calbacks文本框中给出。
GUI 函数调用
Matlab中提供了GUI界面方便对仿真结果进行系统展示,GUI界面在运行时,程序首先调用gui_mainfcn函数,会给figure以及各控件加一个事件监听器
(1istener),用来监听用户对figure以及各控件的操作。例如:用户用鼠标点击一个pushbutton按钮时,程序会监听到这个时间,然后调用该按钮的回调函数pushbutton_callback,对事件进行处理。用户点击figure的关闭按钮时,会调用其CloseRequestFcn回调函数,执行关闭窗口的操作。

雷达原理

雷达是Radar(RAdio Detection And Ranging)的音译词,意为“无线电检测和测距”,即利用无线电波来检测目标并测定目标的位置,这也是雷达设备在最初阶段的功能。它是通过发射电磁波并接收回波信号,在后端经过信号处理将目标的各种特性分析出来的一个复杂的系统。其中,雷达回波中的可用信息包括目标斜距,角位置,相对速度以及目标的尺寸形状等。典型的雷达系统主要由发射机,天线,接收机,数据处理,定时控制,显示等设备组成。利用雷达可以获知目标的有无,目标斜距,目标角位置,目标相对速度等。现代高分辨雷达扩展了原始雷达概念,使它具有对运动目标(飞机,导弹等)和区域目标(地面等)成像和识别的能力。

单类型雷达信号

线性调频(LFM)信号
脉冲压缩雷达能同时提高雷达的作用距离和距离分辨率。这种体制采用宽脉冲发射以提高发射的平均功率,保证足够大的作用距离;而接收时采用相应的脉冲压缩算法获得窄脉冲,以提高距离分辨率,较好的解决雷达作用距离与距离分辨率之间的矛盾。
脉冲压缩雷达最常见的调制信号是线性调频(Linear Frequency Modulation)信号,接收时采用匹配滤波器(Matched Filter)压缩脉冲。
LFM信号(也称Chirp信号)的数学表达式为:

式中fc为载波频率,rect(t/T)为矩形信号,K=B/T是调频斜率,于是信号的瞬时频率为

如右图所示为典型的chirp信号(a) up-chirp(K>0) (b)down-chirp(K<0):典型的chirp信号(a) up-chirp(K>0)  (b)down-chirp(K<0)
则up-chirp信号可写为:
在这里插入图片描述
式中
在这里插入图片描述
是信号s(t)的复包络。由傅立叶变换性质,S(t)与s(t)具有相同的幅频特性,只是中心频率不同而以,因此,Matlab仿真时,只需考虑S(t)。
如下图即为仿真波形
在这里插入图片描述

QPSK信号
QPSK与二进制PSK一样,传输信号包含的信息都存在于相位中。载波相位取四个等间隔值之一,如л/4, 3л/4,5л/4,和7л/4。相应的E为发射信号的每个符号的能量,T为符号持续时间,载波频率f等于nc/T,nc为固定整数。
QPSK信号的正弦载波有4个可能的离散相位状态,每个载波相位携带2个二进制符号,其信号表示式为:
在这里插入图片描述
在0到之间,i=1,2,3,4中取值。其中为四进制符号间隔,(i=1,2,3,4)为正弦载波的相位,有四种可能的状态。其产生框图如下:
在这里插入图片描述
其仿真波形如下:
在这里插入图片描述

噪声信号
在现实的战场环境中,没有单一的、不变的雷达信号,由于环境的复杂性和干扰性,空间中充满着各种各样的噪声,以及传播着各式各样的信号,因此环境并不能简单地调制出雷达信号,还需要模拟出噪声,与目标雷达信号混合。然而
由于环境特殊性,还有必要将信号进行混合叠加,尽可能地还原真实战场环境。
由于高斯白噪声能够反映实际通信信道中的噪声情况,能够比较真实的反映信道噪声的一些特性,并且可以用具体的数学表达式表示,适合分析、计算系统的抗噪声性能,所以广泛应用于通信系统的理论分析。
高斯噪声指的是它的概率密度函数服从正态分布的噪声。高斯分布,记为N
(µ,ơ2),其中µ为高斯分布的均值(数学期望),ơ2为高斯分布的方差,当µ=0,ơ2=1时,该分布称为标准正态分布。高斯分布的一维概率密度可表示为式:
在这里插入图片描述
在通信信道中,一般噪声的均值u=0。,那么可以得知当噪声的均值是零的时候,噪声的平均功率等于其方差。高斯白噪声的高斯指的是概率分布为正态分布,白噪声指的是其二阶矩不相关一阶矩为常数。故把瞬时值的概率分布服从高斯分布,功率谱密度服从均匀分布的噪声称为高斯白噪声。这两个条件是判断高斯白噪声性能的标准。
仿真产生效果如下:
在这里插入图片描述

不同脉冲间隔PRI信号产生
每秒种产生的触发脉冲数目,称为脉冲重复频率,以PRF(Pulse-Recurrence-Frequency) 表示。两个相邻脉冲之间的时间间隔,称为脉冲重复周期,用T表示,它等于脉冲重复频率的倒数,即PRI。

  • PRI以正弦函数为包络的可调抖动范围信号
    本实验采用以可调频率与幅度的正弦波的抽样幅值为脉冲重复周期,由于抽样幅值相对于脉冲宽度过小,因此在进行调整脉冲重复周期时采用乘以基波频率。由于周期不能为负值,因此对于普通正弦波要取绝对值。同时为了达到更接近真实战场环境,在进行以正弦波抽样幅值为脉冲抽样幅值时,添加可随机抖动的较小幅值,同时随机抖动的范围可调[3]。
    如下图为以幅值为0.5,频率为1000hz,抖动范围为0.1,基波为普通正弦波的仿真信号波形。
    在这里插入图片描述
  • PRI以三角波为包络的可调抖动范围信号
    与以正弦波为包络的信号相似,为了满足脉冲间隔PRI可以线性变化的要求,我采用PRI以三角波为包络的可变脉冲重复周期的信号。同时由于三角波抽样幅值相对较小,因此采用相应幅值乘以基波频率,同时为了达到更接近真实战场环境,在进行以三角波抽样幅值为脉冲抽样幅值时,添加可随机抖动的较小幅值,同时随机抖动的范围可调。
    如下图为抖动范围为0.1,基波为普通正弦波的仿真信号波形。
    在这里插入图片描述

雷达信号叠加

简单信号叠加
在信号处理中经常需要把两信号相叠加以生成新的信号供实验使用,但是在叠加时两信号的维度一般不同,因此需要在两信号相加之前需要进行两信号维度的校准。如下图,是普通正弦波与线性调频信号叠加效果。
在这里插入图片描述

不同SNR雷达信号叠加
为满足实际情况下雷达信号的形式,在信号处理中经常需要把噪声叠加到信号上去,在叠加噪声时往往需要满足一定的信噪比[6]。信噪比,为有用信号功率(Power of Signal)与噪声功率(Powerof Noise)的比。因此为幅度(Amplitude)比的平方:
在这里插入图片描述
在这里插入图片描述
在进行噪声与信号叠加时两信号的采样频率可能会不一样,因此需要在两信号相加之前进行采样频率的校准,同时因为matlab在进行信号叠加时会有对于两信号采样频率之积要小于2^31的要求,同时雷达的信号采样频率一般较高,因此在直接进行采样频率校准时需将两信号采样频率拆成多个频率相乘即可。如下图,是普通正弦波与白噪声信号在SNR=1时的叠加效果。
在这里插入图片描述

六、仿真实验

  • GUI仿真界面展示
    本文的实验环境为matlab,在实验过程中使用matlab编写了相应的调制代码来对实际的调制过程进行仿真,实验过程中还考虑了噪声对调制的影响。为了更好地展示论文中的学习成果,本文在编写好相应的调制的代码后设计了一个展示系统的GUI界面,该界面主要负责选择相应的调制方式并展示出对应的调制结果,GUI界面的部分代码如下:
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @GUI_OpeningFcn, ...
                   'gui_OutputFcn',  @GUI_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end

在这里插入图片描述
从上图可以看出,该GUI界面包含了本文实验中的所有调制方法,通过点击相应的按钮产生对应的信号并进行调制,输出相应的调制信号。

  • 仿真文件的编写
    如下图所示,仿真分为以下几个部分:GUI界面布局,主函数,调制方式功能函数,普通信号相加,不同SNR噪声信号叠加以及生成噪声信号函数。GUI.fig用于编辑GUI界面,主函数m文件用于数据的输入与交互,信号调制函数负责应用主函数的产生的的数据作为信号调制参数用于信号的调制。
    在这里插入图片描述
  • AM,FM生成
    如下图所示,从幅值与频率两个可编辑文本框中读取幅值频率。
    在这里插入图片描述
    主要代码如下:
    Ka = get(handles.edit1,‘String’);
    Ka = str2num(Ka);
    Kf = get(handles.edit2,‘String’);
    Kf = str2num(Kf);
  • LFM信号生成
    如下图所示,从幅值、频率1与频率2可编辑文本框中读取输入数值,其中频率1、频率2在生成信号过程中作用如下述代码:
    function [ ] = LFM( A_lfm,f_lfm,k_lfm )

    y_lfm = A_lfmcos(2pif_lfmt+pik_lfmt.^2);
    其中由于此时随着采样时间的延长,LFM信号的频率逐渐增加,故在生成时规定了采样时间只有0.001s,采样频率采用频率1与频率2之和。
    从时域图看出每个脉冲的信号曲线都是由疏变密,代表信号的频率是线性上升变化的。
    在这里插入图片描述
  • QPSK信号生成
    如图4.6.5所示,从可编辑文本框中读取输入数值,其中主要代码如下:
    %-------------------------将信息源分成两路 ,分别对信号进行抽样-------------
    data_1=zeros(1,N); %定义一个长度为N的空数据data_1
    for i1=1:Num/2
    data_1(sample*(i1-1)+1:samplei1)=data1(2i1-1); %对奇数码元进行采样
    end
    data_2=zeros(1,N);
    for i2=1:Num/2
    data_2(sample*(i2-1)+1:samplei2)=data1(2i2); %对偶数码元进行采样
    end

    for j1=1:N
    a(j1)=cos(2pif*(j1-1)Ts/Ns); %对余弦载波抽样每个周期采N个点
    b(j1)=-sin(2
    pif(j1-1)*Ts/Ns); %对正弦载波抽样每个周期采N个点
    End
    %---------------------------调制---------------------------
    data_a=data_1.*a; %a路用余弦调制
    data_b=data_2.*b; %b路用正弦调制
    在这里插入图片描述
  • 噪声信号生成
    由于噪声信号可以直接使用,故并未在GUI界面中添加噪声信号生成的相关操作。白噪声生成的主要代码如下:
    y=randn(1,2500);
    y=y/std(y);
    y=y-mean(y);
    a=0;
    b=5;
    y=a+b*y;
    f = 1000000;
    T = length(y)/f;
    t = 0:1/f:(T-1/f); % 采样点
  • PRI以正弦函数为包络的可调抖动范围信号
    如下图所示,从幅度、频率与抖动范围可编辑文本框中读取输入数值
    在这里插入图片描述
    主要代码如下:
    [filename1,pathname1]=uigetfile(’.wav’,‘请选择语音信号文件1:’);
    [X1,fs1]=audioread([pathname1 filename1]);
    T = 0.1;%采样时间
    f = fs1;%采样率
    t = 0:1/f:(T-1/f); % 采样点
    y = abs(A
    cos(2piF*t));%由于周期不能取负数,故取绝对值

    x = length(y);
    z1 = 1;
    wavin1 = [];%wavin1存储周变化的新的脉冲信号
    for i = 1:x
    z = fix(y(i)fs1/100); %代表周期以正弦波的形式存在
    k1 = k
    10000;
    k2 = rand(1,k1);
    k3 = k2/10000;
    z = fix((1-k3)*z);
    wavin1(z1:z1 + length(X1) - 1) = X1(1:length(X1));
    z1 = z + length(wavin1);
    wavin1((z1 - z):z1) = 0;
    end
  • PRI以三角波为包络的可调抖动范围信号
    如下图所示,从最大值与抖动范围可编辑文本框中读取输入数值
    在这里插入图片描述
    主要代码如下:
    [filename,pathname]=uigetfile(’.wav’,‘请选择语音信号文件:’);
    [X,fs]=audioread([pathname filename]);
    t=(0:2/(2^5):2);
    y = (k1/2)sawtooth(pi(t),0.5)+k1/2+1;

    wavin1 = [];%wavin1存储周变化的新的脉冲信号
    for i = 1:x
    k11 = k2
    10000;
    k22 = rand(1,k11);
    k3 = k22/10000;
    z = fix(y(i)100(1-k3)); %代表周期以三角波的形式存在
    wavin1(z1:z1 + length(X) - 1) = X(1:length(X));
    z1 = z + length(wavin1);
    wavin1(z1 - z:z1) = 0;
    end
  • 普通信号叠加仿真
    两信号叠加主要代码如下:
    function [Y] = add(X,filepath_name,fs)%X:调制信号,filepath_name:叠加的信号,调制信号的采样频率
    wavin = [];
    [wavin,fs1]=audioread(filepath_name);
    if fs1~=fs
    a=resample(wavin,fix(fs/100),fix(fs1/100));
    wavin=resample(a,100,100);
    end
    nx=size(X,1);
    wavin=wavin(1:nx);
    Y = X + wavin;
  • 不同SNR信号叠加仿真
    不同SNR信号叠加与普通信号叠加相似,只是在输入信号的功率比上要手动设置,主要代码如下:
    function [Y,NOISE] = SNR(X,filepath_name,SNR,fs)%X:叠加前的信号,filepath_name:噪声信号,fs:叠加前信号的采样频率
    [wavin,fs11]=audioread(filepath_name);
    if fs11~=fs
    a=resample(wavin,fix(fs/100),fix(fs11/100));
    wavin=resample(a,100,100);
    end
    nx=size(X,1);
    NOISE=wavin(1:nx);
    NOISE=NOISE-mean(NOISE);
    signal_power = 1/nx*sum(X.*X);
    noise_variance = signal_power / ( 10^(SNR/10) );
    NOISE=sqrt(noise_variance)/std(NOISE)*NOISE;
    Y=X+NOISE;

七、课题总结

课题由matlab实现了雷达信号的仿真,加噪处理以及信号的相互混合叠加。
通过设置信号参数来实现信号的仿真,达到尽可能模拟战场环境的目的。经过短暂的研究工作,我深深感到信号调制仿真这一领域要研究的内容还非常多,自己研究的内容在很多方面还需要不断改进,有以下几个方面是可以继续改进或深入的:

  • 课题在深刻理解信号调制理论的基础设计了大量的仿真模型,但是这些模型仅仅对雷达信号的调制进行了模拟,虽然能说明一定问题,但整体规划比较小,今后应该研究比较复杂的信号调制。
  • 课题在设计仿真模型时,主要是针对当前系统的信噪比发生变化时,系统性能变化状况。虽然信噪比是研究信号调制性能分析非常重要的参量,它对信号调制系统的影响是很大,但还可以拓宽思路,结合信号调制系统的其他重要参量,设计仿真模型,对系统性能进行更全面的分析。
  • 课题所使用的仿真软件是matlab,通过matlab编写相应的程序可以对信号进行各种叠加后仿真,还可以设计出相应的GUI界面,使得结果的展示变的更加直观,但还有其他仿真性能优异的仿真软件,比如在数字通信系统中常用的SystemView,它在数字通信系统中的应用非常广泛。所以,在今后的研究,设计仿真模型时,可利用多种仿真软件,发挥各种软件的特长。
  • 同时在进行某些信号生成时所用时间较长,归根到底还是未使用较好的算法,只用了较为简单的算法,所以在今后将学习更多的高效的算法以支撑起信号的快速生成。

八、参考文献

[1]肖冬荣.系统科学及其当前存在的问题[J].系统工程理论与实践,1990.
[2]陈桂明等.应用MATLAB建模与仿真[M].北京:科学出版社,2001.
[3]丁鹭飞,耿富录.雷达原理[M].西安:西安电子科技大学出版社,2002.
[4]张葛祥,李娜.MATLAB仿真技术与应用[M].北京:清华大学出版社,2003.
[5]赵树杰,赵建勋.信号检测与估计理论·[M].北京:清华大学出版社,2005.
[6]Mahafza B R.雷达系统设计MATLAB仿真[M].北京:电子工业出版社,2009.

九、搭建平台及代码

相关代码
GUI平台

  • 25
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值