Separating waves of very close wavelengths
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 &lt; k &lt; 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.