clear; close all; clc;
addpath(fullfile(pwd, '../helpers'));
set(0, 'DefaultTextInterpreter', 'latex')
set(0, 'DefaultLegendInterpreter', 'latex')
set(0, 'DefaultAxesTickLabelInterpreter', 'latex')
% speed of light
c = 299792458;
Single Pulse Matched Filtering
The following is an implementation of single pulse matched filterting to estimate a unknown scattering scene.
The modeled enviroment and corresponding scatteres are generated by the provided function
which is static through each test (non-random) allowing for comparison of different system parameters. The
transmitted pulse must be designed to adhere to the following hardware/processing constraints:
• Center Frequency:
• Maximum Sampling Rate:
• Maximum Pulse Duration:
• Sample Memory Depth:
Pulse Design
The design of the transmitted pulse is centered around producing a autocorrelation response with minimal
sidelobe energy to avoid masking adjacent targets as well as maintain fine range resolution. This is performed
by shaping the waveforms energy spectral density (ESD) via design of the phase function corresponding to
the following signal model.
With an appropriate spectral shaping template, this produces a constant amplitude frequency modulated
waveform with minimal sidelobe energy due to the Fourier relationship between the ESD and autocorrelation.
Leveraging the provided waveform generation script, a pulse can be spectrally shaped to
match a Guassian energy spectral template that adheres to the user configured parameters: pulse bandwidth B,
pulse duration , and sample rate . A linear frequency modulated and barker phase coded pulse are also
generated to be used as comparison between different pulse structures and their effectiveness in range profile
estimation.
B = 10e6;
T_pulse = 10e-6;
Fs = 200e6;
duty_cycle = 1/10;
1
[x, t] = genNLFM(B, Fs, T_pulse, false); % boolean to show waveform characteristics
% [x, t] = genLFM(B, Fs, T_pulse, false); % boolean to show waveform characteristics
% [x, t] = genBarker(13, Fs, T_pulse, false); % boolean to show waveform
characteristics
Transmission
The baseband pulse is next modulated up to a selected carrier frequency, within the radar constraints, and
'transmitted' using the function. The carrier frequency of transmission determines both the systems
doppler sensitivity as well as the unambiguous velocity extent. The doppler shift of a scatterer moving at velocity
is found as demonstrating a inverse relationship between wavelength and doppler shift. This
means that increasing the carrier frequency will allow for improved distinguishability between similar velocity
targets. This comes at a cost of decreasing the unambiguous velocity region which spans across the following
If the assumption can be made that all absolute target velocities will be less than then the higher the
transmission frequency the better the target velocity fidelity. This is difficult to examine using a single pulse but
is made more evident in the multipulse simulation outlined in Part 2.
% test across multiple carrier frequencies
Fc = [3e9 4.5e9 6e9];
T_pri = T_pulse * (1/duty_cycle);
% store results for matched filtering
X_mod = zeros(size(x, 1), length(Fc));
Y = zeros(size(x, 1)*(1/duty_cycle), length(Fc));
for i = 1:length(Fc)
% modulate signal with center frequency
x_mod = x .* exp(-2j * pi * Fc(i) * t);
% generate received signal
y = genRxData(x_mod, Fs, Fc(i), 1, T_pri);
% % generate known delay response -> FOR DEBUGGING
% range = 500; % meters
% bin_index = floor((2*range*Fs)/c);
% y = zeros(size(x_mod, 1)*(1/duty_cycle), 1);
% y(1+bin_index:length(x_mod)+bin_index) = x_mod;
% store to data matrices
X_mod(:, i) = x_mod;
Y(:, i) = y;
2
end
Matched Filter Processing
Maximum SNR processing occurs when a filter is applied to the receive signal that maximizes the Cauchy-
Schwarz inequality. From lecture 14, this filter was proven to be an integrating function that is matched the
the designed signal structure . The applicaiton of this filter is shown below in which a estimate of the
scattering enviroment, , is obtained for each range interval l with corresponding resolution determined by
the transmission bandwidth ( ).
This single pulse matched filtered response extends across the entire unambiguous range determined by the
pulse repitition frequecy.
for i = 1:length(Fc)
% extract specific center frequency response
y = Y(:, i);
x_mod = X_mod(:, i);
% matched filter output using FFT based correlation
nfft = length(x) + length(y) - 1;
h_hat = ifft(conj(fft(x_mod, nfft)) .* fft(y, nfft)) / norm(x_mod, 2).^2;
% calculate plot axes
ax_time = (0:numel(y)-1)/Fs;
ax_range = ((0:size(h_hat, 1)-1) * ((c / (2 * Fs))))';
figure(i+1); clf;
set(gcf, 'Position', [100 100 600 500]);
% received signal subplot
subplot(2,1,1);
plot(ax_time * 1e6, 10 * log10(abs(y).^2), 'b', 'LineWidth', 2);
title(sprintf('Received Signal Power (Fc = %.2f GHz)', Fc(i)/1e9));
xlabel('Delay ($\mu$s)', 'Interpreter', 'latex');
ylabel('$|y(t)|^2$ (dB)', 'Interpreter', 'latex');
grid on;
xlim([0 max(ax_time*1e6)]);
% matched filter subplot
3
subplot(2,1,2);
mf_power_dB = 10 * log10(abs(h_hat).^2);
plot(ax_range/1e3, mf_power_dB, 'b', 'LineWidth', 2);
title(sprintf('Matched Filter Response (Fc = %.2f GHz)', Fc(i)/1e9));
xlabel(sprintf('Range $km$ ($R_{ua}$ = %.2f $km$)', (c * T_pri) / 2000),
'Interpreter', 'latex');
ylabel('$|h_{hat}[l]|^2$ (dB)', 'Interpreter', 'latex');
grid on;
ylim([max(mf_power_dB)-80, max(mf_power_dB)+10]);
end
4
5
Discussion
From the unprocessed and matched filter responses, it is evident that there are four scatterers in the illuminated
environment, located at approximately 0.6 km, 1.1 km, 2.6 km, and 3 km. The targets and their respective
ranges remain consistent across all tested center frequencies, which is expected, as the center frequency does
not directly affect range resolution. However, an increase in Doppler sensitivity is visually noticeable in each of
the unprocessed responses but less intuitive to interpret in a single-pulse scenario.
All provided code and respones written by William Powers leveraging the EECS 800 provided
slides and code examples.