1 脉冲压缩的定义
脉冲压缩即pulse compression,它是指发射宽编码脉冲并对回波进行处理以获得窄脉冲,因此脉冲压缩雷达既保持了窄脉冲的高距离分辨力,又能获得宽脉冲的强检测能力。
2 脉冲压缩的主要手段
目前的脉冲压缩的手段主要有线性调频、非线性调频与相位编码等。
1)线性调频
是最简单的脉冲压缩信号,容易产生,而且其压缩脉冲形状和信噪比对多普勒频移不敏感,因而得到了广泛的应用,但是,在利用多普勒频率测量目标方位和距离的情况下很少使用;
2)非线性调频
非线性调频具有几个明显的优点,不需要对时间和频率加权,但是系统复杂。为了达到所需的旁瓣电平,需要对每个幅度频谱分别进行调频设计,因而在实际中很少应用;
3)相位编码
相位编码波形不同于调频波形,它将宽脉冲分为许多短的子脉冲。这些子脉冲宽度相等,其相位通过编码后被发射。根据所选编码的类型,包括巴克码、伪随机序列编码以及多项制编码等。
3 脉冲压缩的产生背景
随着飞行技术的飞速发展,对雷达的作用距离、分辨能力、测量精度和单值性等性能指标提出越来越高的要求。测距精度和距离分辨力对信号形式的要求是一致的,主要取决于信号的频率结构,为了提高测距精度和距离分辨力,要求信号具有大的带宽。而测速精度和速度分辨力则取决于信号的时域结构,为了提高测速精度和速度分辨力,要求信号具有大的时宽。除此之外,为提高雷达系统的发现能力,要求信号具有大的能量。由此可见,为了提高雷达系统的发现能力、测量精度和分辨能力,要求雷达信号具有大的时宽、带宽、能量乘积。但是,在系统的发射和馈电设备峰值功率受限制的情况下,大的信号能量只能靠加大信号的时宽来得到。测距精度和距离分辨力同测速精度和速度分辨力以及作用距离之间存在着不可调和的矛盾。于是在匹配滤波器理论指导下,人们提出了脉冲压缩的概念。
由于发射机效率的限制,雷达真正采用的脉压信号是由调频和相位编码产生的,其中以线性调频和二相编码信号的研究与应用最为广泛。
4 线性调频信号(LFM)
脉冲压缩雷达最常见的调制信号是线性调频(Linear Frequency Modulation)信号,接收时采用匹配滤波器(Matched Filter)压缩脉冲。
LFM信号的数学表达式,式中为载波频率,为矩形信号。是调频斜率,于是,信号的瞬时频率为。
图 典型的LFM信号(a)up-LFM(K>0)(b)down-LFM(K<0)
将(1)式中的up-LFM(信号重写 式中,是信号s(t)的复包络。由傅立叶变换性质,S(t)与s(t)具有相同的幅频特性,只是中心频率不同而以,因此,Matlab仿真时,只需考虑S(t)。由Matlab程序产生信号,并作出其时域波形和幅频特性。
由此可以得到关于线性调频脉冲信号频率特性的两个重要结论:
(1)在满足大时宽带宽积的条件下, 线性调频脉冲信号的振幅谱接近矩形函数, 频谱宽度近似等于信号的调频变化范围B, 与时宽无关。
(2)在满足大时宽带宽积的条件下, 线性调频脉冲信的相位谱具有平方律特性。
以上两点是设计匹配滤波器,进行脉冲压缩处理的主要依据。
注:匹配滤波器是在白噪声背景中检测信号的最佳线性滤波器,其输出信噪比在某个时刻可以达到最大,它是对线性调频信号进行脉冲压缩的主要手段。
5 对脉冲压缩信号的仿真
结合以上分析,用Matlab仿真雷达发射信号,回波信号,和压缩后的信号的复包络特性,其载频不予考虑(实际中需加调制和正交解调环节),仿真信号与系统模型如图3。
仿真程序模拟产生理想点目标的回波,并采用频域相关方法(以便利用FFT)实现脉冲压缩,得到仿真图。
对比图可以看出,采用脉冲压缩后,在接收机的接收端信噪比有了明显的改善,进而可以在满足分辨率的基础上,提高雷达的作用距离。
function varargout = test1(varargin)
%TEST1 M-file for test1.fig
% TEST1, by itself, creates a new TEST1 or raises the existing
% singleton*.
%
% H = TEST1 returns the handle to a new TEST1 or the handle to
% the existing singleton*.
%
% TEST1('Property','Value',...) creates a new TEST1 using the
% given property value pairs. Unrecognized properties are passed via
% varargin to test1_OpeningFcn. This calling syntax produces a
% warning when there is an existing singleton*.
%
% TEST1('CALLBACK') and TEST1('CALLBACK',hObject,...) call the
% local function named CALLBACK in TEST1.M with the given input
% arguments.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help test1
% Last Modified by GUIDE v2.5 09-Mar-2009 14:24:57
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @test1_OpeningFcn, ...
'gui_OutputFcn', @test1_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
% End initialization code - DO NOT EDIT
% --- Executes just before test1 is made visible.
function test1_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin unrecognized PropertyName/PropertyValue pairs from the
% command line (see VARARGIN)
% Choose default command line output for test1
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes test1 wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = test1_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{
1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
creat=findobj(gcf,'Tag','radiobutton1');
processing=findobj(gcf,'Tag','radiobutton2');
global T
T=str2double(get(handles.edit1,'string'));
global B
B=str2double(get(handles.edit2,'string'));
if(get(creat,'Value')==get(creat,'Max'))
K=B/T; %频率调制斜率
Fs=5*B;Ts=1/Fs; %计算机仿真的采样频率和采样周期
N=T/Ts; %采样点数
t=linspace(-T/2,T/2,N);
St=exp(j*pi*K*t.^2); %产生线性调频信号
axes(handles.axes1)
handles.axes1_handle=gca;
plot(t*1e6,real(St));
xlabel('\fontsize{9}时间(us)');title('\fontsize{9}LFM脉冲的时域波形');
grid on;axis tight;
freq=linspace(-Fs/2,Fs/2,N);
% freq=linspace(0,Fs,N);
axes(handles.axes2)
handles.axes2_handle=gca;
% plot(freq*1e-6,abs(fft(St)));
plot(freq*1e-6,fftshift(abs(fft(St))));
xlabel('\fontsize{9}频率(MHz)');title('\fontsize{9}LFM脉冲的幅频特性');
grid on;axis tight;
elseif(get(processing,'Value')==get(processing,'Max'))
global Rmin
Rmin=str2double(get(handles.edit3,'string'));
global Rmax
Rmax=str2double(get(handles.edit4,'string'));
global R
R=str2num(get(handles.edit5,'string'));
global RCS
RCS=str2num(get(handles.edit6,'string'));
global winid
winid=str2double(get(handles.edit7,'string'));
% T=10e-6; %pulse duration 10us
% B=30e6; %chirp frequency modulation bandwidth 30MHz
% Rmin=10000;Rmax=15000; %range bin
% R=[10500,11000,12000,12008,13000,13002]; %position of ideal point targets
% RCS=[1 1 1 1 1 1]; %radar cross section
% winid=2;
%=========================================================
%%Parameter
C=3e8; %propagation speed
K=B/T; %chirp slope
Rwid=Rmax-Rmin; %receive window in meter
Twid=2*Rwid/C; %receive window in second
Fs=5*B;Ts=1/Fs; %sampling frequency and sampling spacing
Nwid=ceil(Twid/Ts); %receive window in number
%=================================================================
%determine proper window
if(winid==0.)
win(1:Nwid)=1.;
end
if(winid==1.)
win=hamming(Nwid)';
end
if(winid==2.)
win=chebwin(Nwid,60)';
end
nosewite=findobj(gcf,'Tag','checkbox1');
if(get(nosewite,'Value')==get(nosewite,'Max'))
nose=randn(1,Nwid);
else
nose=zeros(1,Nwid);
end
完整代码或者代写添加QQ912100926
往期回顾>>>>>>
【信号处理】基于GUI界面之处理录音与音频【Matlab 123期】
【信号处理】CDR噪声和混响抑制【含Matlab源码 198期】
【信号处理】最小二乘法解决稀疏信号恢复问题【Matlab 199期】
【信号处理】遗传算法的VST混响【Matlab 200期】
【信号处理】HMM的睡眠状态检测【Matlab 201期】
【信号处理】小波变换的音频水印嵌入提取【Matlab 202期】
【信号处理】ICA算法信号分离【Matlab 203期】
【信号处理】基于GUI界面的脉搏信号之脉率存档【Matlab 204期】
【信号处理】基于GUI界面的虚拟信号发生器(各种波形)【Matlab 205期】
【信号处理】基于GUI界面信号发生器之电子琴【Matlab 206期】
【信号处理】数字电子琴设计与实现【Matlab 207期】
【雷达通信】雷达数字信号处理【Matlab 214期】
【雷达通信】线性调频(LFM)脉冲压缩雷达仿真【Matlab 215期】
【雷达通信】距离多普勒(RD)、CS、RM算法的机载雷达成像【Matlab 216期】
【雷达通信】《现代雷达系统分析与设计》【Matlab 217期】
【语音处理】基于matlab GUI语音信号处理平台【含Matlab源码 218期】
【语音采集】基于GUI语音信号采集【Matlab 219期】
【语音调制】基于GUI语音幅度调制【Matlab 220期】
【语音合成】基于GUI语音合成【Matlab 221期】
【语音识别】基于GUI语音基频识别【Matlab 222期】
【语音加密】基于GUI语音信号加密解密【Matlab 223期】
【信号处理】小波变换的语音增强【Matlab 224期】
【信号处理】基于GUI语音去噪【Matlab 225期】
【语音增强】基于GUI维纳滤波之语音增强【Matlab 226期】
【音频处理】基于GUI语音信号处理【含Matlab 227期】
【雷达通信】基于GUI雷达定位【Matlab 244期】