📄 accumulate.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% 视频积累仿真程序 %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;close all;clc;
%==================================================================================%
% 仿真参数初始化 %
%==================================================================================%
global Lambda; % 波长
C=3.0e8; % 光速(m/s)
RF=9300e6; % 雷达射频
Lambda=C/RF; % 雷达工作波长
PulseNumber=30; % 回波脉冲数
TimeWidth=1.0e-6; % 发射信号时宽
PRT=1/3000; % 雷达发射脉冲重复周期(s)(3.0KHZ)
Fs=2.0e6; % 采样频率
F0=0; % 中频
DetectDistance=30; % 雷达探测距离(km)
%---------------------------------------------------------------%
SampleNumber=fix(Fs*PRT); % 计算一个脉冲周期的采样点数;
TotalNumber=SampleNumber*PulseNumber; % 总的采样点数;
PRT1=2*30.0e3/3.0e8; % 雷达探测距离对应的时间
DetectNumber=ceil(Fs*PRT1); % 雷达探测距离内的采样点数
%---------------------------------------------------------------%
Target1Velocity=0; % 目标速度(m/s) (*)
Target2Velocity=22.5; % 对应 Fr/2=22.5 (*)
Target3Velocity=0;
Target4Velocity=0;
Target5Velocity=0; % 对应 Fr/4 (*)
Target6Velocity=0;
Target7Velocity=0; % (*)
Target8Velocity=0;
%---------------------------------------------------------------%
Sig1Power=0.0; % 信号功率
Sig2Power=1.0; % 信号功率
Sig3Power=0;
Sig4Power=0;
Sig5Power=0.0005; % 信号功率
Sig6Power=0.0;
Sig7Power=1.0; % 信号功率
Sig8Power=0.0;
%---------------------------------------------------------------%
Target1Distance=4; % 目标距离(km)
Target2Distance=8;
Target3Distance=12;
Target4Distance=15;
Target5Distance=18;
Target6Distance=21;
Target7Distance=24;
Target8Distance=27;
%====================================================================================%
% 产生和通道目标信号 %
%====================================================================================%
number=fix(Fs*TimeWidth);
if rem(number,2)~=0
number=number+1;
end
for i=-fix(number/2):fix(number/2)-1
Chirp(i+fix(number/2)+1)=1;
end
[r,c]=size(Chirp);
%-------------------------产生目标回波串------------------------%
SignalTemp1 =zeros(1,SampleNumber); % 产生一个脉冲周期采样点数的全零矩阵
SignalTemp2 =zeros(1,SampleNumber);
SignalTemp3 =zeros(1,SampleNumber);
SignalTemp4 =zeros(1,SampleNumber);
SignalTemp5 =zeros(1,SampleNumber);
SignalTemp6 =zeros(1,SampleNumber);
SignalTemp7 =zeros(1,SampleNumber);
SignalTemp8 =zeros(1,SampleNumber);
DelayNumber1=fix(DetectNumber*Target1Distance/DetectDistance);
DelayNumber2=fix(DetectNumber*Target2Distance/DetectDistance);
DelayNumber3=fix(DetectNumber*Target3Distance/DetectDistance);
DelayNumber4=fix(DetectNumber*Target4Distance/DetectDistance);
DelayNumber5=fix(DetectNumber*Target5Distance/DetectDistance);
DelayNumber6=fix(DetectNumber*Target6Distance/DetectDistance);
DelayNumber7=fix(DetectNumber*Target7Distance/DetectDistance);
DelayNumber8=fix(DetectNumber*Target8Distance/DetectDistance);
SignalTemp1(DelayNumber1+1:DelayNumber1+number)=sqrt(Sig1Power)*Chirp;
SignalTemp2(DelayNumber2+1:DelayNumber2+number)=sqrt(Sig2Power)*Chirp;
SignalTemp3(DelayNumber3+1:DelayNumber3+number)=sqrt(Sig3Power)*Chirp;
SignalTemp4(DelayNumber4+1:DelayNumber4+number)=sqrt(Sig4Power)*Chirp;
SignalTemp5(DelayNumber5+1:DelayNumber5+number)=sqrt(Sig5Power)*Chirp;
SignalTemp6(DelayNumber6+1:DelayNumber6+number)=sqrt(Sig6Power)*Chirp;
SignalTemp7(DelayNumber7+1:DelayNumber7+number)=sqrt(Sig7Power)*Chirp;
SignalTemp8(DelayNumber8+1:DelayNumber8+number)=sqrt(Sig8Power)*Chirp;
for i=1:PulseNumber
Signal1((i-1)*SampleNumber+1:i*SampleNumber)=SignalTemp1;
Signal2((i-1)*SampleNumber+1:i*SampleNumber)=SignalTemp2;
Signal3((i-1)*SampleNumber+1:i*SampleNumber)=SignalTemp3;
Signal4((i-1)*SampleNumber+1:i*SampleNumber)=SignalTemp4;
Signal5((i-1)*SampleNumber+1:i*SampleNumber)=SignalTemp5;
Signal6((i-1)*SampleNumber+1:i*SampleNumber)=SignalTemp6;
Signal7((i-1)*SampleNumber+1:i*SampleNumber)=SignalTemp7;
Signal8((i-1)*SampleNumber+1:i*SampleNumber)=SignalTemp8;
end
%-------------------在回波信号中加入目标多卜勒信息----------------%
Target1Fd=2*Target1Velocity/Lambda; %计算目标多卜勒频率
Target2Fd=2*Target2Velocity/Lambda;
Target3Fd=2*Target3Velocity/Lambda;
Target4Fd=2*Target4Velocity/Lambda;
Target5Fd=2*Target5Velocity/Lambda;
Target6Fd=2*Target6Velocity/Lambda;
Target7Fd=2*Target7Velocity/Lambda;
Target8Fd=2*Target8Velocity/Lambda;
FreqMove1=exp(j*2*pi*Target1Fd*(0:TotalNumber-1)/Fs);
FreqMove2=exp(j*2*pi*Target2Fd*(0:TotalNumber-1)/Fs);
FreqMove3=exp(j*2*pi*Target3Fd*(0:TotalNumber-1)/Fs);
FreqMove4=exp(j*2*pi*Target4Fd*(0:TotalNumber-1)/Fs);
FreqMove5=exp(j*2*pi*Target5Fd*(0:TotalNumber-1)/Fs);
FreqMove6=exp(j*2*pi*Target6Fd*(0:TotalNumber-1)/Fs);
FreqMove7=exp(j*2*pi*Target7Fd*(0:TotalNumber-1)/Fs);
FreqMove8=exp(j*2*pi*Target8Fd*(0:TotalNumber-1)/Fs);
Signal1=Signal1.*FreqMove1;
Signal2=Signal2.*FreqMove2;
Signal3=Signal3.*FreqMove3;
Signal4=Signal4.*FreqMove4;
Signal5=Signal5.*FreqMove5;
Signal6=Signal6.*FreqMove6;
Signal7=Signal7.*FreqMove7;
Signal8=Signal8.*FreqMove8;
Signal=Signal1+Signal2+Signal3+Signal4+Signal5+Signal6+Signal7+Signal8;
t=1;
Range=linspace(0,49950,SampleNumber);
subplot(2,1,1)
plot(abs(Signal1));
title('longzia ');
grid on;zoom on;
figure(1);
plot(Range,abs(Signal(1:SampleNumber)));
title('信号模值 ');
grid on;zoom on;
%subplot(2,1,2)
%plot(Range,imag(Signal(1:SampleNumber)));
%grid on;zoom on;
%====================================================================================%
% 产生系统噪声信号 %
%====================================================================================%
NoisePower=-17; %(dB) Vp-p=20mv;
SystemNoise=normrnd(0,10^(NoisePower/10),1,TotalNumber);
figure(2);
plot(Range,SystemNoise(1:SampleNumber));
title('噪声');
grid on;zoom on;
%====================================================================================%
% 总的回波信号 %
%====================================================================================%
Echo1=Signal+SystemNoise;
max_value=max(Echo1);
Echo1=Echo1./max_value; % 归一化 %
Echo=zeros(1,PulseNumber*1024);
for i=1:PulseNumber
Echo((i-1)*1024+1:(i-1)*1024+SampleNumber)=Echo1((i-1)*SampleNumber+1:i*SampleNumber).*127;
end
for i=1:PulseNumber
prf(i,:)=Echo(1,(i-1)*1024+1:i*1024);
end
figure(3);
plot(floor(abs(Echo(1:1024))));
title('量化后的信号+噪声模值');
grid on;zoom on;
%====================================================================================%
% 三脉冲对消 %
%====================================================================================%
for i=1:PulseNumber-2
mti(i,:)=prf(i,:)+prf((i+2),:)-2*prf((i+1),:);
end
figure(4);
plot(abs(mti(3,:)));
title('三脉冲对消结果');
grid on;zoom on;
%====================================================================================%
% 视频积累 %
%====================================================================================%
accumulate(1,:)=zeros(1,1024);
accumulate(2,:)=zeros(1,1024);
for i=3:PulseNumber-2
accumulate(i,:)=abs(mti(i-1,:))+1.8157*accumulate(i-1,:)-0.8345*accumulate(i-2,:);
end
figure(5);
plot(abs(accumulate(PulseNumber-2,:))-180);
title('视频积累结果');
grid on;zoom on;
temp=abs(accumulate(PulseNumber-2,:))-180;
save data1.dat temp -ascii;
%====================================================================================%
% MTD(相参积累) %
%====================================================================================%
mtisignal(:,1:1024)=mti(3:18,1:1024);
for i=1:1024
mtdsignal(:,i)=fft(mtisignal(:,i),16);
end
for i=1:16
figure(6);
plot(abs(mtdsignal(8,:)));grid on,zoom on;
title('MTD(16点相参积累)结果');
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -