【雷达通信】雷达脉冲压缩含Matlab源码
【雷达通信】雷达脉冲压缩含Matlab源码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1 简介
脉冲压缩雷达(Pulse Compression Radar , PCR)的定义是,发射端发射经编码或调制的宽脉冲,接收端处理后输出窄脉冲的雷达。目前,脉冲压缩雷达发射信号的调制方式主要有线性调频、非线性调频和相位编码等几种。
2 部分代码
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
%==================================================================
%%Gnerate the echo
t=linspace(2*Rmin/C,2*Rmax/C,Nwid); %receive window
%open window when t=2*Rmin/C
%close window when t=2*Rmax/C
M=length(R); %number of targets
td=ones(M,1)*t-2*R’
/C*ones(
1
,Nwid);
Srt=RCS*(exp(j*pi*K*td.^
2
).*(abs(td)<T/
2
))+nose;%radar echo from point targets
Srt=Srt.*win;
%=========================================================
%%Digtal processing of pulse compression radar using FFT and IFFT
Nchirp=ceil(T/Ts); %
pulse duration
in
number
Nfft=
2
^nextpow2(Nwid+Nchirp-
1
); %number needed to compute linear
%convolution using FFT algorithm
Srw=fft(Srt,Nfft); %fft of radar echo
t
0
=linspace(
0
,T,Nchirp);
St=exp(j*pi*K*t
0
.^
2
); %chirp signal
Sw=fft(St,Nfft); %fft of chirp signal
Sot=ifft(Srw.*conj(Sw)); %signal after pulse compression
%=========================================================
N
0
=
1
;
Z=abs(Sot(
N0:
N
0
+Nwid-
1
));
Z=Z/max(Z);
Z=
20
*log1
0
(Z+
1
e-
6
);
%figure
% subplot(
211
)
axes(handles.axes1)
handles.axes1_handle=gca;
plot(t*
1
e6,real(Srt));axis tight;
xlabel(
’Time in u sec’
);ylabel(
’Amplitude’
)
title(
’Radar echo without compression’
);
% subplot(
212
)
axes(handles.axes2)
handles.axes2_handle=gca;
plot(t*C/
2
,Z)
% axis([
11900
,
12100
,-
60
,
0
]);
axis([Rmin,Rmax,-
60
,
0
]);
xlabel(
’Range in meters’
);ylabel(
’Amplitude in dB’
)
title(
’Radar echo after compression’
);
end
% --- Executes on button press
in
pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be
defined
in
a future version of MATLAB
% handles structure with handles
and
user data (see GUIDATA)
close
3 仿真结果
4 参考文献
[1]魏选平, 姚敏立, 张周生,等. 脉冲压缩雷达原理及其MATLAB仿真[J]. 电子产品可靠性与环境试验, 2008, 26(4):3.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
