Further avenues on that approach could include an analysis of the noise to account for it immediately, or an anlysis of the recursive solution, which would involve discerning solving for the measurement correction given the error after combining with an imperfect destructive wave. Another approach is to consider the system as linear algebra. We write an equation for the signal given how we want to represent it, and simply solve for the coefficients of the matrix involved. 0933 So, a fourier transform models a signal as being made of as many sinusoids as it has samples. Here, we have 6 sinusoids. Mostly because the data is complex; only half as many are needed for real-valued data. Each of these 6 sinusoids has a real and a complex component. It's written like exp(2j * pi * freq * sample_point). There are 6 frequencies, and 6 sample points, so this makes a 6x6 matrix. This should somehow make a system of equations that has 6 unknowns. I'm thinking the 6x6 matrix has the evaluation of the sin and cosine at each row (or column), spread out for each different sample. When you apply the fourier transform, you multiply a matrix like this by the signal. But rather here, the matrix is the data. More like an inverse fourier transform, the inverse wave is the variables here, and we set it equal to the data. data = F @ x We can then solve that linear system of equations for x, and x becomes the frequency representation. This linear equation should work for any selection of frequencies, and any selection of wavelets. So much simpler! Man I was asking my teachers to teach me this in high school, but it never happened. I never figured out what classes to take in college to learn this either. I dunno. But I bet that this is how wavelets are normally cast in engineering. I _think_ this should work. And it explains the validity of taking the matrix inverse later. Next step is to try it.