%
% ===========================================================
% Analysis of amplitude and phase in radar system
% ===========================================================
%
% AUTHORSHIP
% Cui Ning
%
% UPDATES
% March 10th, 2018 Created Receive wave generate module
% March 11th, 2018 Created Baseband signal generate
% March 17th, 2018 Created FFTshift and find the reason of error is
% lowfilter
% March 18th, 2018
% March 22th, 2018 Update Radar_system v2.0 (add to phase error)
% March 23th, 2018 Update Radar_system v3.0 (add to Cycle sampling)
% March 25th, 2018 Created PhaseCorrection Update Radar_system v4.0(modified
% complex number calculation)
% March 26th, 2018 Created 2-FFT(unfinished)
% March 28th, 2018 2-FFT(finished)
% March 29th, 2018 created CFAR
close all
clc
clear all
% ################### %
% Radar parameter %
% ################### %
% radar parameter
LightSpeed=3e8; %The speed of light (unit:m/s)
ModulationBand=3e8; %The modulation band of signal (unit:Hz)
ModulationPeriod=1.2e-3; %The modulation period of signal (unit:s)
CarriferFrequency=24e9; %The frequency of working (unit:Hz)
Amplitude_dB=20; %The transmitting power (unit:dB)
DataNumber=360; %The number of the signal data
lambda=LightSpeed/CarriferFrequency; % The length of the wave (unit:m)
HorizontalDistance=30; % The distance of the horizontal (unit:m)
LongitudinalDistance=150; % The distance of the longitudinal (unit:m)
AntennaCoordinates_1=[10,3]; % The coordinate of the first antenna
AntennaGain=30; % The antenna gain
RadarCrossSection=-5; % The radar cross section
AntennaAperture=0.5; % The antenna aperture
SamplingRate=300e3; % The sampling rate
PassBand=100e3; % The pass band
StopBand=120e3; % The stop band
Pfa=1e-6;
ReferNumber=8;
k=6;
nGuardCell=3;
% ####################################### %
% Generate the simulation environment %
% ####################################### %
% Generate transimitting signal
variable={DataNumber,ModulationPeriod,ModulationBand,CarriferFrequency,Amplitude_dB};
[TransimitSignal,SimulateTime,PhaseError_T]=signal_generate(variable);
% Generate the target data
variable={HorizontalDistance,LongitudinalDistance,AntennaCoordinates_1,lambda,SimulateTime};
[TargetData,Coordinate]=GenerateTargetData(variable);
l=TargetData{1,1};
z1=l(1,1);
l=TargetData{1,2};
z2=l(1,1);
V=TargetData{2,1};
% ################## %
% Cycle sampling %
% ################## %
% ######################### %
% Receive wave generate %
% ######################### %
% Generate the receiving signal
variable={TransimitSignal,TargetData,Amplitude_dB,AntennaGain,RadarCrossSection,...
AntennaAperture,lambda,ModulationBand,ModulationPeriod,...
CarriferFrequency,DataNumber,1};
[ReceivingSignal,PhaseError_R]=PropagationSimulation(variable);
% ############################ %
% Baseband signal generate %
% ############################ %
% mix signal
variable={TransimitSignal,ReceivingSignal,SimulateTime,1};
[MixingSignal]=mixing(variable);
%low pass filtering 滤波器有问题
% variable={SamplingRate,PassBand,StopBand,MixingSignal,SimulateTime};
% [BasebandSignal]=lowfilter(variable);
% ############################## %
% Baseband signal processing %
% ############################## %
% ############################ %
% Correct the phase error %
% ############################ %
variable={MixingSignal,PhaseError_T,ModulationBand,ModulationPeriod,SimulateTime};
[IF4]=PhaseCorrection(variable);
% ################################ %
% analog to digital conversion %
% ################################ %
% A/D
variable={MixingSignal,SamplingRate,SimulateTime};
[DigitalSignal,SamplingPointT]=AnalogConvDigital(variable);
% ####################### %
% Two-dimensional FFT %
% ####################### %
% FFT
% variable={IF4,SamplingPointT,ModulationBand,ModulationPeriod,1};
% [FrquencySpectrum1]=FFTshift(variable);
variable={DigitalSignal,SamplingPointT,ModulationBand,ModulationPeriod,lambda,TargetData,1};
[FrquencySpectrum,DataRange]=FFTshift(variable);
% ########### %
% OS-CFAR %
% ########### %
variable={FrquencySpectrum,DataRange,Pfa,ReferNumber,k,nGuardCell,1};
[S,TargetData]=CFAR(variable);