⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accumulate.m

📁 我自己完成的MATLAB仿真雷达视频积累程序
💻 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 + -