Skip to main content
1 of 4

N'-band channelizer (filter bank) via Sliding FFT

I'm trying to figure out how to perform N'-band channelizer for SSCA (strip spectral correlation analyzer) via sliding FFT. I have already understood that I have to take N points of signal in time domain x(t) and apply windowing function and take another N points by shift the window by L (L=1 in my case). Then I apply fourier transform to those points. But how many of those windowed vectors I need ? I tried to follow code in commP25ssca.m but I cant understand steps between the final result (and then can't set proper input values to mentioned function).

SSCA blog: https://cyclostationary.blog/2016/03/22/csp-estimators-the-strip-spectral-correlation-analyzer/

Documentation for matlab function: https://apps.dtic.mil/sti/pdfs/ADA311555.pdf

My code for simple sliding fft via following this paper: https://www.comm.utoronto.ca/~dimitris/ece431/slidingdft.pdf

clc
clear all
close all
ef = 0.1;
ef_vz = 1;
Td = 1000;
time = 0:1/ef_vz:Td;
freq = 0:1/Td:ef_vz;
sig = 1*exp(1j*2*pi*ef.*time);
spek = abs(fft(sig));
N = 512;
num_blocks = floor((length(sig)-N) / 1);
x = sig;
counter = 0;
for i = 1:length(x)
    
    k = [i:i+N-1];
    window = x(k);
    if i == 1
        Xk(i,:) = fft(x(k));
    else
        Xk(i,:) = (Xk(i-1,:)-x(i)+x(i+N-1)).*exp((1j*2*pi*(k-1))/N);
    end
    counter = counter + 1;
    if counter == 1
        break
    else
        continue
    end
   
end
p = linspace(0,ef_vz,N);
figure(1)
plot(p,abs(Xk))