- The radar system maintains a constant height during simulation.
constantGammaClutter doesn't take account of Doppler shift of the frequency due to radar motion
    8 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
% this script models the operation of 
% an artillery munition proximity fuse with LFM signal
% radar platform is considered to move verticalli down to 
% terrain surface at several different velosities
% of 0, 50, 100 and 200 m/s;
% antenna looks vertically down to terrain
%
% at the final figure one can see that there is no Doppler shift of
% frequency at variuous radar velocity values
%
%% initial data
antenna_beamwidth = 40; % antenn's beamwidth, degrees
c = physconst('Lightspeed'); % light speed, m/s 
sbw = 300e6;    % frequency deviation width - SweepBandWidth, Hz
fc = 3e9;       % carrier frequency, Hz
lambda = freq2wavelen(fc,c); % crrier wavelength, m
Tpr = 2e-3;    % pulse repetition period
prf = 1/Tpr;      % pulse repetition frequency
fslope = sbw/Tpr; % the rate of frequency change in LFM pulse, Hz/s
fs = 2*sbw;  % sample frequency, Hz
n = ceil(Tpr*fs); % number of samples in 1 pulse
fs = n/Tpr; % correction of sample frequency, so an integer number of sample to be in 1 pulse
ts = 1/fs; % sample time step, s
t = (0 : ts : -ts+Tpr).'; % time samples array
Lt = length(t); 
f = [-Lt/2 : -1+Lt/2]/Lt*fs; % frequency value scale for FFT
f_ = [0 : -1+Lt/2]/Lt*fs; % frequency nonnegative value scale for FFT
%% waveform setting
wvfrm = phased.LinearFMWaveform('SampleRate',fs, ... 
    'PRF', 1/Tpr, ...
    'DurationSpecification', 'Pulse width', ...
    'PulseWidth', Tpr, ...
    'SweepBandwidth',sbw, ...
    'SweepDirection', 'Up', ...
    'SweepInterval', 'Symmetric', ...
    'FrequencyOffset', fc);     
u = wvfrm(); % reference signal samples
%% radar parameters
antenna =  phased.CosineAntennaElement(...
    'FrequencyRange',[fc-sbw, fc+sbw], ...
    'CosinePower',[5 5]);
figure();
pattern(antenna,fc);
radiator = phased.Radiator('Sensor', antenna,...
    'PropagationSpeed', c,...
    'OperatingFrequency', fc);
collector = phased.Collector('Sensor', antenna,...
    'PropagationSpeed', c,...
    'OperatingFrequency', fc);          
transmitter  = phased.Transmitter('PeakPower',1e-2, ... 
    'Gain', 2, ... 
    'LossFactor', 0, ... 
    'InUseOutputPort', false, ...
    'CoherentOnTransmit', false); 
receiver = phased.ReceiverPreamp('Gain',20,... 
    'LossFactor', 2, ... 
    'NoiseMethod', 'Noise temperature',...
    'ReferenceTemperature', 290,... 
    'NoiseFigure', 6, ... 
    'NoiseComplexity', 'Complex', ...
    'SampleRate', fs); 
% clutter parameters setting
terrain_gamma = surfacegamma('flatland');  
clutter = constantGammaClutter('Sensor', antenna,...
    'PropagationSpeed', c,...
    'OperatingFrequency', fc,...
    'SampleRate', fs, ...
    'PRF', prf, ...
    'Gamma', terrain_gamma, ...
    'CoherenceTime', Tpr, ...
    'TransmitSignalInputPort',true,...                                
    'OutputFormat', 'Samples', ...
    'NumSamples', Lt);
% low pass filter setting
LowPass = designfilt('lowpassiir',...   
    'PassbandFrequency',1/4*fs, ... 
    'StopbandFrequency',1/2*fs, ...
    'SampleRate',fs);  
%% modeling of the reflected clutter signal
h=200; % radar height over the terrain surface, m
f_range = range2beat(h,fslope,c); % beat frequency shift, Hz
depAng = 90; % depression angle of radar velocity vector, degrees
tgt_pos = [0;0;0]; % target position
tgt_vel = [0;0;0]; % target velocity
rad_pos = [ h/tand(depAng); 0; h]; % radar position
rad_vel = [ 0,0,0;...   % radar velocity vectors
    0,0,-50;...
    0,0,-100;...
    0,0,-200]'; 
% figure to display and compare magnitude spectrums at different radar velocities 
fig = figure(); 
xlabel('{\itf}, kHz'); 
ylabel('{\itG}_{\ity}, dB');
for i=1:size(rad_vel,2) % iterations over all radar velocities
    % Doppler frequency shift (theoretic estimation), Hz
    RadialSpeed = radialspeed(rad_pos,rad_vel(:,i),tgt_pos,tgt_vel); 
    f_dsh = speed2dop(RadialSpeed,lambda); % Doppler shift
    uref = transmitter(u); % reference signal at the output of transmitter
    % clutter signal calculation
    clutter.release();
    clutter.PlatformHeight = h;            
    clutter.PlatformSpeed = norm(rad_vel(:,i)); 
    clutter.PlatformDirection = [0;-90]; % vertical motion down to terrain surface   
    clutter.MountingAngles = [0, 90, 0]; % antenna looks vertically towards the terrain surface
    clutter.reset();
    u_cluttersig = clutter(uref); % reflected clutter signal         
    urx = receiver(u_cluttersig); % received clutter signal 
    y = urx.*conj(uref); % received signal mixing with the reference signal    
    y = filter(LowPass,y); 
    FY = fft(real(y)); % FFT       
    GY = 1/Lt*abs(FY(1:Lt/2)); % magnitude spectrum
    GY(2:end-1) = 2*GY(2:end-1); 
    figure(fig);
    hold on;
    % displaing theoretical beat-and-doppler freuency
    stem((f_range-f_dsh)*1e-3, -300, '--k.',... 
        'DisplayName',num2str(rad_vel(3,i),4));
    % displaing magnitude spectrum of the received clutter signal
    plot(1e-3*f_, mag2db(GY), '-', 'LineWidth', 0.5, ...
        'DisplayName', num2str(rad_vel(3,i),4));            
    grid on;
    shg;
end
figure(fig);
legend;
0 comentarios
Respuestas (1)
  Jeffrey Clark
      
 el 5 de Oct. de 2022
        @Andrey Senkov, this bullet below from the description of Simulate constant gamma clutter - MATLAB (mathworks.com) indicates it does not do what you want. Are you looking for an alternative approach or have I missinterpreted your question?
5 comentarios
  Jeffrey Clark
      
 el 8 de Oct. de 2022
				
      Editada: Jeffrey Clark
      
 el 8 de Oct. de 2022
  
			@Andrey Senkov, my other point was about using the plot functions given in the examples to validate what you are doing.
Ver también
Categorías
				Más información sobre Waveform-Level Simulations en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

