I understand that sampling rate should be twice the signal bandwidth for successful reconstruction. But what I don't get is how this translates in the time domain.
For example, I have a sine wave pulse with frequency 100MHz and duration of say 50ns. This signal has a bandwidth of 20MHz (1/50ns = 20MHz). Theoretically, I can sample this signal at any frequency above 40Mhz. Let's say I sample at 50MHz, then I only get 2 samples per pulse!! Now what can you possibly do with those 2 samples is my question. In other words, although Nyquist criterion is satisfied in this example, there's not enough data points to proceed.
This kind of signals are common in radar and generally you want to run some sort of matched filtering/correlation once you have digitized the pulse. But you can't run any descent signal processing on just two samples? am I missing something here?
Answer
In many pulsed radar applications, one pulse is not enough to be informative, mainly for the reason you mention. However, coherent processing of multiple pulses can be used to extract useful information.
As an example, take a time-domain signal of sufficient length to accurately extract frequency information. Now multiply (not convolve) that signal with a rectangular pulse train in the time domain. In effect, you are taking a large number of your samples, and setting them to zero. Now consider the result in the frequency-domain. It will look like the convolution of the original spectrum with the spectrum of the pulse train.
Here is a MATLAB example:
K = 3; % Samples per pulse
N = 50; % Number of pulses
duty = 0.1; % Duty Cycle
Fs = 48e3; % Sampling Frequency
f0 = 13e3; % Center frequency
fd = f0*(1+0.03); % Doppler shifted frequency
SNR = 10; % Signal/Noise Ratio (dB)
% Helper function for plotting FFTs
plotFFT=@(x,Fs) plot(Fs*(0:length(x)-1)/length(x)-Fs/2, abs(fftshift(fft(x))));
% Create a train of rectangular pulses
rect_pulse_train = repmat([ones(1,K), zeros(1,K*(1/duty-1))],1,N);
figure(1); plotFFT(rect_pulse_train,Fs); title('Spectrum of pulse train');
% Create a carrier signal plus a doppler shifted version
t = (0:length(rect_pulse_train)-1)/Fs;
x = cos(2*pi*f0*t) + 0.7*cos(2*pi*fd*t);
% Add Gaussian noise
nstd = norm(x) / sqrt(2 * length(x) * 10^(SNR/10));
x_noisy = x + nstd*(randn(size(x)) + 1j*randn(size(x)));
x_pulse = [x_noisy(1:K), zeros(1,length(x)-K)];
figure(2); plotFFT(x_pulse,Fs); title('Spectrum of single pulse');
% Capture a coherently-pulsed version of the signal
y = rect_pulse_train.*x_noisy;
figure(3); plotFFT(y,Fs); title('Spectrum of coherently pulsed signal');
As you try various values of K
, you can see how it affects your frequency resolution. Even though the peaks are spectrally smeared, it is still possible to identify small frequency shifted copies of the carrier when using coherent doppler processing.
No comments:
Post a Comment