# Separating waves of very close wavelengths

I'm new to wave problems, so excuse my simplified words. I have a signal consists of high range of frequencies . I applied a Band-pass filter to this signal and I have been able to separate it to bands of specific frequencies.

The problem that I want to solve is as follows: Each band have a lot of individual waves of VERY, VERY close wavelengths. For instance 4.08 Hz and 4.09 Hz. even we may have 4.001 Hz and 4.002 Hz as well. The signal data is limited and I can't push the filter to any better resolution.

The question now, How I can separate the individual waves in each band? And if possible please refer me to any books which deal with such problem.

• This close range of frequencies need not to be separated. These will move as a single wave of same frequency and there would be no noise in the signal. – userØØ7 May 30 '13 at 16:26
• This should presumably have been migrated to DSP instead of physics. It would certainly be a better match there or on SciComp. One could argue that it repreents an experimental analysis problem, but even so this is a second best site for this question. I will discuss it with the math mods, but it is likely to be bounced back. – dmckee --- ex-moderator kitten May 30 '13 at 16:32
• How long is your sample ? Ideally if you want to to discriminate with a resolution of 0.001 Hz then your sample should ideally be of the order of 1000 s in length (or greater). – Paul R May 31 '13 at 7:10
• Do you know the frequencies and are just trying to estimate the amplitudes? Or are the frequencies, amplitudes and phases all unknown? – Peter K. Nov 25 '13 at 1:17

You have an incorrect approach here. Instead of trying to design small range filters, you should just do frequency-domain analysis.

Say you have a signal $x$ consisting of $N$ samples, sampled at the rate of $f_s$ Hz. For simplicity, let's take an example with $N = 1000$ and $f_s$ = 1000 Hz. The Nyquist frequency is half of the sampling frequency, which is $500$ Hz in this case. This means that the signal you are sampling should not have frequencies above that (otherwise there would be aliasing).

Now, if you want to know what frequencies you have in your signal, compute the discrete Fourier transform (DFT). DFT is defined as

$X(k) = \sum_{n=0}^{N-1} x(n)e^{-2\pi k\frac{n}{N}} \quad 0 < k < N-1$

From the DFT, you get two things. First, $|X|$ is called the magnitude spectrum, which is of your interest. The second thing would be the phase spectrum, given by $arg(X)$. DFT is symmetric from the middle for real-valued inputs, so the frequency resolution you get in our example is $1$ Hz. Now, say that you would also want to know the half frequencies. Looking at the definition of DFT, you can see it is $N$-point. If you want, you can do it likewise for $M$-points. Thus, to get the half frequencies as well, take $M=2000$.

In the case of your question, what you need is a really long DFT.

Other things to note: do not compute DFT from its definition. Use a fast Fourier transform (FFT). It's faster, and more precise.

• As an addendum, note that the long DFT that yepyepyep references must be filled with actual data; you can't realize it via zero-padding. Zero-padding only interpolates the low-resolution spectrum; it doesn't increase the resolution in the result. – Jason R May 31 '13 at 18:53

You probably have answers since May, but here are a couple of comments anyway.

There are several related questions:
FFT-for-a-specific-frequency-range mentions
$\quad$ZoomFFT — a clear 9-page tutorial, with nice pictures
$\quad$chirp-DFT like a magnifying glass for a certain frequency range
how-can-i-compute-a-log-spaced-power-spectrum

A quite different method is to make a matrix with columns sin-cos on a fine grid of frequencies $$\quad\quad A = [ \cos\ (2 \pi\, f_0), \sin\ (2 \pi\, f_0), \cos\ (2 \pi\, f_1), \sin\ (2 \pi\, f_1) ... ]$$ and solve $\quad A x = \text{data}\quad$ by least squares.
d) it's easy to add smoothing constraints, i.e. regularize $x$ .