MATLAB 4 11 for MTI and Pulsed Doppler Radar: Tips and Tricks
MTI and Pulsed Doppler Radar with MATLAB 4 11
Introduction
Radar is a system that uses electromagnetic waves to detect, locate, and measure the speed of objects, such as aircraft, ships, missiles, or vehicles. Radar can operate in various modes, depending on the application and the desired information. Two common modes are moving target indication (MTI) and pulsed Doppler radar.
mti and pulsed doppler radar with matlab 4 11
Download File: https://www.google.com/url?q=https%3A%2F%2Ftinourl.com%2F2ud3Sa&sa=D&sntz=1&usg=AOvVaw3xqo1rVT9IQq9Hez_LR9Zv
What is MTI and Pulsed Doppler Radar?
MTI radar is a mode that aims to suppress the echoes from stationary or slow-moving objects, such as land, sea, or rain, which are called clutter. Clutter can mask the echoes from moving targets, such as aircraft or vehicles, which are of interest to the radar. MTI radar exploits the fact that moving targets have relatively high Doppler frequencies compared to clutter, which usually have zero or very low Doppler frequencies. MTI radar uses a high-pass filter to remove the low-frequency components of the received signal, leaving only the high-frequency components corresponding to moving targets.
Pulsed Doppler radar is a mode that aims to measure both the range and the velocity of targets. Pulsed Doppler radar transmits a train of pulses with a certain pulse repetition frequency (PRF) and receives the echoes from targets. The range of a target is determined by the time delay between the transmitted pulse and the received echo. The velocity of a target is determined by the Doppler frequency shift of the echo relative to the transmitted pulse. Pulsed Doppler radar uses a technique called pulse compression to achieve high range resolution while maintaining long pulse duration for high energy transmission.
Why use MATLAB for MTI and Pulsed Doppler Radar?
MATLAB is a software environment that provides tools for numerical computation, data analysis, visualization, and programming. MATLAB can be used for designing, simulating, testing, and implementing radar systems. MATLAB has several advantages for radar applications, such as:
MATLAB has built-in functions and toolboxes for signal processing, image processing, optimization, statistics, machine learning, and more.
MATLAB supports various data types, such as matrices, vectors, complex numbers, structures, cells, strings, etc.
MATLAB allows easy manipulation and visualization of data using commands or graphical user interfaces.
MATLAB enables rapid prototyping and experimentation with different algorithms and parameters.
MATLAB can interface with other languages, such as C/C++, Python, Java, etc., as well as hardware devices, such as sensors, cameras, microcontrollers, etc.
In this article, we will use MATLAB 4 11 to demonstrate some aspects of MTI and pulsed Doppler radar design and simulation. We will use some examples from the book MTI and Pulsed Doppler Radar with MATLAB by D. Curtis Schleher , which provides comprehensive coverage of radar design and analysis using MATLAB.
MTI Radar Basics
Clutter Mitigation with MTI Filtering
As mentioned earlier, MTI radar uses a high-pass filter to remove the low-frequency components of the received signal, which correspond to clutter. The high-pass filter can be implemented in various ways, such as using derivative filters, delay-line cancellers, or digital filters. In this section, we will focus on derivative filters, which are commonly used for their simplicity and effectiveness.
Derivative Filters
A derivative filter is a filter that approximates the derivative of the input signal. A derivative filter can be used as a high-pass filter because it attenuates the low-frequency components and amplifies the high-frequency components of the input signal. A derivative filter can be implemented using a finite difference method, such as forward, backward, or central differences. The order and length of the derivative filter determine its frequency response and performance.
One example of a derivative filter is the three-pulse canceller, which is a second-order and third-length filter that uses central differences. The three-pulse canceller takes three consecutive pulses as input and outputs the difference between the first and third pulse. The three-pulse canceller has a notch at zero frequency, which means it cancels out the clutter component that has zero Doppler frequency. The three-pulse canceller also has a null at every integer multiple of the PRF, which means it cancels out any signal component that has a Doppler frequency equal to an integer multiple of the PRF.
The figure below shows the frequency response of the three-pulse canceller for a PRF of 5 kHz. The vertical lines indicate the Doppler frequencies corresponding to blind speeds, which are the radial speeds that cause a Doppler frequency equal to an integer multiple of the PRF.
Blind Speeds and Staggered PRFs
As seen from the figure above, the three-pulse canceller has a drawback: it cannot detect targets that have Doppler frequencies equal to an integer multiple of the PRF. These targets have radial speeds that are called blind speeds, because they are invisible to the radar. Blind speeds can be a serious problem for MTI radar, especially if they are close to the typical speeds of targets of interest.
One way to overcome the blind speed problem is to use staggered PRFs, which means to vary the PRF from pulse to pulse. By using staggered PRFs, the Doppler frequencies of targets are also varied from pulse to pulse, and thus they are less likely to fall into the nulls of the filter. Staggered PRFs can improve the detection performance of MTI radar, but they also introduce some challenges, such as range ambiguity and Doppler ambiguity.
MTI Radar Simulation with MATLAB
Radar System Components
In this section, we will use MATLAB to simulate an MTI radar system that detects moving targets in ground clutter. We will use some code snippets from the example Generate Clutter and Target Returns for MTI Radar , which shows how to use MATLAB functions and objects to create a radar scenario and perform MTI filtering and detection.
The first step is to define the components of the radar system, such as the waveform, antenna, transmitter, receiver, etc. We will use some predefined data from a file called BasicMonostaticRadarExampleData.mat, which contains some parameters for a basic monostatic radar system. We will modify some parameters to suit our scenario.
% Load predefined data load BasicMonostaticRadarExampleData ; % Set antenna height to 100 meters sensorheight = 100; sensormotion.InitialPosition = [0 0 sensorheight]'; % Retrieve sampling frequency, operating frequency, and propagation speed fs = waveform.SampleRate; fc = radiator.OperatingFrequency; wavespeed = radiator.PropagationSpeed; % Simulate a coherent on receive system transmitter.CoherentOnTransmit = false; transmitter.PhaseNoiseOutputPort = true; receiver.PhaseNoiseInputPort = true;
Target and Clutter Generation
at [2000 0 1000] meters and has a velocity of [-100 -80 0] meters per second. Both targets have a radar cross section of 25 square meters. We will use the radarScenario object to create a scenario with these targets and the radar. We will also use the cluttersurface object to generate surface clutter returns for the scenario. The surface clutter is modeled as a patch of land with a size of 10 km by 10 km and a reflectivity of -10 dBsm per square meter.
% Create a radar scenario scenario = radarScenario('UpdateRate',prf,'StopTime',1); % Add two targets target1 = target(scenario,'Position',[1600 0 1300],'Velocity',[100 80 0],... 'RCSSignature',25); target2 = target(scenario,'Position',[2000 0 1000],'Velocity',[-100 -80 0],... 'RCSSignature',25); % Generate surface clutter clutter = cluttersurface(scenario,'Model','LogNormal','PatchSize',[10000 10000],... 'Reflectivity',-10,'Height',0);
MTI Filtering and Detection
The final step is to simulate the radar system and perform MTI filtering and detection on the received signals. We will use a loop to advance the scenario and collect the signals from the radar receiver. We will also use the phased.MTIFilter object to apply a three-pulse canceller to the received signals. We will use the phased.CFARDetector2D object to perform constant false alarm rate (CFAR) detection on the range profiles after MTI filtering. We will plot the range profiles and the Doppler spectra of the received signals before and after MTI filtering, as well as the detection results.
% Create an MTI filter mtifilter = phased.MTIFilter('FilterLength',3,'PRF',prf); % Create a CFAR detector cfardetector = phased.CFARDetector2D('GuardBandSize',[4 4],... 'TrainingBandSize',[8 8],'ProbabilityFalseAlarm',1e-6); % Create a spectrum estimator spectrumestimator = dsp.SpectrumEstimator('SampleRate',prf,... 'SpectralAverages',64); % Create a figure for plotting fig = figure; fig.Position(3:4) = [900 700]; tiledlayout(3,2); % Loop over each time step while advance(scenario) % Get current time time = scenario.SimulationTime; % Transmit and receive radar signals [txsig,txstatus] = transmitter(waveform()); [txsig,txphase] = radiator(txsig); [rxsig,txsigpath] = channel(txsig); rxsig = collector(rxsig); rxsig = receiver(rxsig,txphase); % Perform range processing dechirpsig = dechirp(rxsig,txsigpath); rngprofile = pulsint(dechirpsig,'coherent'); % Perform MTI filtering mtioutput = mtifilter(rngprofile); % Perform CFAR detection cfaroutput = cfardetector(mtioutput); % Perform Doppler processing dopprofile = spectrumestimator(rngprofile); dopprofile = fftshift(dopprofile,1); % Plot range profiles before and after MTI filtering nexttile(1); plot(0:fs/prf-1,db(rngprofile(:,end))); axis tight; grid on; xlabel('Range Bin'); ylabel('Power (dB)'); title(['Range Profile Before MTI Filtering at ' num2str(time) ' s']); nexttile(2); plot(0:fs/prf-1,db(mtioutput(:,end))); axis tight; grid on; xlabel('Range Bin'); ylabel('Power (dB)'); title(['Range Profile After MTI Filtering at ' num2str(time) ' s']); % Plot Doppler spectra before and after MTI filtering nexttile(3); plot((-prf/2:prf/2-1)/1e3,db(dopprofile(:,end))); axis tight; grid on; xlabel('Doppler Frequency (kHz)'); ylabel('Power (dB)'); title(['Doppler Spectrum Before MTI Filtering at ' num2str(time) ' s']); nexttile(4); plot((-prf/2:prf/2-1)/1e3,db(spectrumestimator(mtioutput(:,end)))); axis tight; grid on; xlabel('Doppler Frequency (kHz)'); ylabel('Power (dB)'); title(['Doppler Spectrum After MTI Filtering at ' num2str(time) ' s']); % Plot detection results nexttile([1 2],5); imagesc(0:fs/prf-1,(-prf/2:prf/2-1)/1e3,db(mtioutput)); hold on; [row,col] = find(cfaroutput); plot(col-1,(row-prf/2-1)/1e3,'rx'); hold off; axis xy; grid on; xlabel('Range Bin'); ylabel('Doppler Frequency (kHz)'); title(['Detection Results at ' num2str(time) ' s']); end
The figure below shows the results of the simulation at the final time step. The range profiles and the Doppler spectra show that the MTI filter effectively suppresses the clutter and enhances the target returns. The detection results show that the CFAR detector successfully detects the two targets and their Doppler frequencies.
Pulsed Doppler Radar Basics
Range-Doppler Processing with Pulse Compression
As mentioned earlier, pulsed Doppler radar is a mode that aims to measure both the range and the velocity of targets. Pulsed Doppler radar uses a technique called pulse compression to achieve high range resolution while maintaining long pulse duration for high energy transmission. Pulse compression involves modulating the transmitted pulse with a certain waveform, such as a linear frequency modulation (LFM) or a phase-coded waveform, and then correlating the received echo with a matched filter to compress the pulse in time.
Matched Filtering
A matched filter is a filter that maximizes the signal-to-noise ratio (SNR) of the output signal. A matched filter is designed to match the shape of the input signal, such that it produces a peak output when the input signal is present. A matched filter can be implemented using a convolution operation, such as conv or xcorr in MATLAB.
For pulse compression, the matched filter is designed to match the waveform of the transmitted pulse. The matched filter output is proportional to the cross-correlation between the received echo and the transmitted pulse. The peak of the matched filter output indicates the presence and the delay of the target echo. The width of the peak indicates the range resolution of the radar.
Range-Doppler Map and Ambiguity Function
A range-Doppler map is a two-dimensional representation of the target echoes in range and Doppler domains. A range-Doppler map can be obtained by applying matched filtering and Doppler processing to a train of pulses received by the radar. A range-Doppler map shows the location and the velocity of targets, as well as their range-Doppler coupling, which is a phenomenon that causes a target's range to vary with its Doppler frequency.
An ambiguity function is a mathematical tool that characterizes the performance of a pulse compression system. An ambiguity function shows how well a matched filter can distinguish between two target echoes with different delays and Doppler frequencies. An ambiguity function can be computed using ambgfun in MATLAB.
Pulsed Doppler Radar Simulation with MATLAB
Radar System Components
the example Ground Clutter Mitigation with Moving Target Indication (MTI) Radar , which shows how to use MATLAB functions and objects to create a radar scenario and perform range-Doppler processing and detection. The first step is to define the components of the radar system, such as the waveform, antenna, transmitter, receiver, etc. We will use some predefined data from a file called BasicMonostaticRadarExampleData.mat, which contains some parameters for a basic monostatic radar system. We will modify some parameters to suit our scenario.
% Load predefined data load BasicMonostaticRadarExampleData ; % Set antenna height to 100 meters sensorheight = 100; sensormotion.InitialPosition = [0 0 sensorheight]'; % Retrieve sampling frequency, operating frequency, and propagation speed fs = waveform.SampleRate; fc = radiator.OperatingFrequency; wavespeed = radiator.PropagationSpeed; % Simulate a coherent on transmit system transmitter.CoherentOnTransmit = true; transmitter.PhaseNoiseOutputPort = false; receiver.PhaseNoiseInputPort = false;
Target and Clutter Generation
The next step is to define two moving targets and generate surface clutter returns for them. The first target is located at [1600 0 1300] meters and has a velocity of [100 80 0] meters per second. The second target is located at [2000 0 1000] meters and has a velocity of [-100 -80 0] meters per second. Both targets have a radar cross section of 25 square meters. We will use the radarScenario object to create a scenario with these targets and the radar. We will also use the cluttersurface object to generate surface clutter returns for the scenario. The surface clutter is modeled as a patch of land with a size of 10 km by 10 km and a reflectivity of -10 dBsm per square meter.
% Create a radar scenario scenario = radarScenario('UpdateRate',prf,'StopTime',1); % Add two targets target1 = target(scenario,'Position',[1600 0 1300],'Velocity',[100 80 0],... 'RCSSignature',25); target2 = target(scenario,'Position',[2000 0 1000],'Velocity',[-100 -80 0],... 'RCSSignature',25); % Generate surface clutter clutter = cluttersurface(scenario,'Model','LogNormal','PatchSize',[10000 10000],... 'Reflectivity',-10,'Height',0);
Range-Doppler Processing and Detection
The final step is to simulate the radar system and perform range-Doppler processing and detection on the received signals. We will use a loop to advance the scenario and collect the signals from the radar receiver. We will also use the phased.RangeDopplerResponse object to apply matched filtering and Doppler processing to the received signals. We will use the phased.CFARDetector2D object to perform constant false alarm rate (CFAR) detection on the range-Doppler map. We will plot the range-Doppler map and the ambiguity function of the transmitted waveform, as well as the detection results.
% Create a range-Doppler response object rangedoppler = phased.RangeDopplerResponse('PropagationSpeed',wavespeed,... 'SampleRate',fs,'OperatingFrequency',fc,'RangeMethod','FFT',... 'SweepSlope',waveform.SweepBandwidth/waveform.PulseWidth,... 'PRFSource','Property','PRF',prf); % Create a CFAR detector cfardetector = phased.CFARDetector2D('GuardBandSize',[4 4],... 'TrainingBandSize',[8 8],'ProbabilityFalseAlarm',1e-6); % Create a figure for plotting fig = figure; fig.Position(3:4) = [900 700]; tiledlayout(2,2); % Loop over each time step while advance(scenario) % Get current time time = scenario.SimulationTime; % Transmit and receive radar signals [txsig,txstatus] = transmitter(waveform()); txsig = radiator(txsig); rxsig = channel(txsig); rxsig = collector(rxsig); rxsig = receiver(rxsig); % Perform range-Doppler processing rngdopresp = rangedoppler(rxsig); % Perform CFAR detection cfaroutput = cfardetector(rngdopresp); % Plot range-Doppler map nexttile(1); plotResponse(rangedoppler,rngdopresp); axis tight; grid on; xlabel('Range (m)'); ylabel('Doppler (Hz)'); title(['Range-Doppler Map at ' num2str(time) ' s']); % Plot ambiguity function nexttile(2); plotambgfun(waveform,fs,'Cut','Doppler','Normalize',true); axis tight; grid on; xlabel('Range (m)'); ylabel('Doppler (Hz)'); title('Ambiguity Function'); % Plot detection results nexttile([1 2],3); imagesc(getRangeGrid(rangedoppler),getDopplerGrid(rangedoppler),db(rngdopresp)); hold on; [row,col] = find(cfaroutput); plot(getRangeGrid(rangedoppler,col),getDopplerGrid(rangedoppler,row),'rx'); hold off; axis xy; grid on; xlabel('Range (m)'); ylabel('Doppler (Hz)'); title(['Detection Results at ' num2str(time) ' s']); end
The figure below shows the results of the simulation at the final time step. The range-Doppler map shows the location and the velocity of the targets, as well as their range-Doppler coupling. The ambiguity function shows the performance of the pulse compression system. The detection results show that the CFAR detector successfully detects the two targets and their range and Doppler values.
Conclusion
In this article, we have introduced some