I have written a piece of code in MATLAB to generate Frank codes - Pastebin link for pulse compression.
I know that Frank codes are stepped frequency approximations to Linear Frequency modulation(LFM).
LFM Parameters are obtained here:
PW = 100e-6;% Pulse Width
PCR = 100; % Pulse Compression Ratio
CPW = PW/PCR;% Compressed pulse width
Fm = 2/CPW; %Frequency sweep
- Stepped frequency approximation to LFM:
steppedFreq = 0:Fm/(N-1):Fm;
- The phase matrix is generated in the line:
Matrix = mod(Matrix*incPhi,360);
- Frank code is generated inside the for loop:
FCP = [FCP,exp(1j*(2*pift + Matrix(i,p)*pi/180))];
- The autocorrelation in dB is calculated here:
AutoCorrelationdB = 20*log10(abs(AutoCorrelation)/max(abs(AutoCorrelation)));
My question:
The Peak side lobe level obtained is only around $3.5\textrm{ dB}$. Am I following a correct method for generating Frank codes? The peak side lobe level is given by the formula 20*log10(1/(N*sin(pi/M)))
as per the book Principles of Modern Radar: Basic Principles by M.A. Richards - Page 825 which is equal to $29\textrm{ dB}$ for my case($N = 100,M = 10$).
plot(real(FCP))
andplot(imag(FCP))
shows a lot of phase discontinuities which is probably partly responsible for the ripples. Though am I still getting strong peaks (not ripples) when removing those phase discontinuities (maybe I did something wrong, perhaps someone would have better luck there, or at least be able to explain why those peaks are there). $\endgroup$ – SleuthEye Aug 28 '14 at 13:42