|
|
Optimum receiver (matched filter / correlation)A response to this thread on comp.dsp.ProblemDetect a pulse, for example five cycles of a sine waveSolutionConvolve the received signal with the reversed pulse shape (FIR filter).This implements a matched filter or correlation receiver, which is the optimum linear receiver. Matlab scriptclose all; clear all;
len=50;
% Create a pulse, five cycles, 10 samples per cycle
pulse=cos((0:(len-1))/len*2*pi*5);
% a piece of empty sample
pad=zeros(1, len+3);
% create the received signal from pulses and gaps
s=[pad, 1*pulse, pad, 1*pulse, pad, pad, 0.5*pulse, pad];
% The height of the resulting peaks is the sum of all samples squared
factor=sum (pulse .* conj(pulse));
% FIR filter: Convolve the pulse with the signal
rec=filter(fliplr(pulse), [1], s) / factor;
% Plot
figure(); hold on;
plot(s+1, 'r+-'); plot(rec-1, 'g+-'); legend('receiver input', 'receiver output');
Download
The red curve shows the input signal to the matched filter, some delayed pulses. The green curve is the output from the matched filter (or correlator). The peaks coincide with the point in time, when the received pulse is fully aligned with the filter. © Markus Nentwig 2007-2008 The content of this page is provided without any warranty and may not be reproduced without permission. Comments? Questions?Please send me a mail! mnentwig@elisanet.fi |