I am trying to implement what's called the "second spectrum". Basically, you do this:
- Take a time series of length $N$.
- Divide it into $m$ segment, each of length $N'=N/m$.
- For each segment $m$, do a Fourier Transform. The result is the 'first spectrum',$S_i^{(1)}(f_1), i=1:m$
- Divide each spectrum into $n$ octaves, an octave starts at $f_L=f_0 \times 2^p$ and ends at $f_H=f_0 \times 2^{p+1}$, where $p=0,1,2, etc$, and $f_0$ is the lowest frequency in $S_i^{(1)}(f_1)$. For $f_0 = 1$ Hz, The octaves will be like: 1-2 Hz, 2-4 Hz, 4-8 Hz, 8-16 Hz, etc.
- For each octave in each spectrum, sum all spectrum values in that octave.
- Construct a time-series for each octave. There will be $n$ time series each of length $m$.
- Take the Fourier Transform of these time series. This is the second spectrum, $S_n^{(2)}(f_2)$
I have already implemented this algorithm (in c++), but I have a question:
Q: in step 4, can I simply divide the spectrum signal into octaves "just like that"? I mean, without any kind of band-pass filtering to these octaves?
EDIT: what I mean by the "just like that" is as if I am passing the spectrum through a rectangular window (in freq. domain).
No comments:
Post a Comment