DSPRelated.com
Forums

FFT Based Filtering?

Started by moosedude November 20, 2006
>moosedude wrote: > > ... > >> Its part of the overall algorithm I'm applying to my source data,
called a
>> DWT (discrete wavelet transform). I may have asked some questions in
the
>> past here (a few months ago), relating to the same subject. The idea
is
>> that I'm an eventually going to adapt this DWT algorithm, to perform >> another algorithm called the CWT. (continuous wavelet transform) > >Phil, > >I try neither to think much about transforms or to write about them >here, but you just opened a new mystery for me. How can one do anything >continuous on a finite computer. Your data are samples, are they not? > >> I must say, I'm overwhelmed by the amount of replies I've had to my >> initial question, I have never visited such a helpful forum before!
I'm
>> really appreciative to everyone for the response. > >Interesting problems often come from interesting people. > >> I think, the problem is now solved, and as usual it was down to
something
>> stupid, when I was multiplying the fft results together, I was
performing
>> a standard arithmetic multiplication rather than a complex number >> multiplication !! oops. > >The official term for that is "Forrest-trees Syndrome". It happens to >many explorers. > >Jerry >-- >Engineering is the art of making what you want from things you can get. >����������������������������������������������������������������������� >
I've been putting off replying to this, just because I've been trying to work out different ways I can answer this inside my head, but I'm afraid I cannot fully answer your question, of how you can squeeze continuous time into discrete time, it is an extremely complicated subject that I haven't fully finished researching and it can cross over into several different fields of study! However I shall try and explain the perspective I am approaching the problem from.. a CWT takes the mathematically form of .. http://upload.wikimedia.org/math/c/b/5/cb57c0cec60fb9ab9c862375100dfa9f.png (or for the full page...) http://en.wikipedia.org/wiki/Continuous_wavelet_transform Using this formula, and a mother wavelet (in this case Gabor) its possible to produce a scalogram output of the original source signal. In the case of the CWT, it uses this mother wavelet, stretching and dilating/scaling it over the source signal several times, filter the result. In a sense, its a much more sophisticated version of the FFT (for want of a better comparison); in this case, it produces a plot, of frequency against time. Upon implementation of this formula, even with a very small set of samples, it is extremely slow, repeated looping over the source samples over and over again to produce the output (a collection of nested loops, 3 deep, typically looping the length of the source) This is where the DWT comes in, I have researched and studied many, many papers detailing how the DWT can be used to optimize and speed up the CWT, presumable approximating the results of the CWT. The DWT operates in a fair better time domain than the CWT, and is fair more efficient. I would post a link to the paper I am working from at the moment, but I've misplaced the link! (oops!) Currently, as my previous posts suggested, I am testing this algorithm/implementation using a Daubechie 4-tap filter, perform a FFT on this filter, and the source samples and storing the high/low filtered output into a tree structure, with a little bit of reorganizing. This is as far as I have got so far in the implementation, I've still yet to figure out how I can fit the Gabor wavelet into this complicated arrangement, it may not even be possible with the form I have which defines the Gabor wavelet. The man himself, never actually got around to developing Tap filters (high & low pass) for his wavelets, in the form of the Daubechie set... it is not possible to use the recursion algorithm the generate this wavelet. I have had to visit this subject several times, giving myself a little break doing something else in-between, I can get very bogged down with the mathematics, it seems to me sometimes people choose the most complicated method of explain concepts which are very simple, and hiding behind the maths? Also one little equation can hide years of research and understanding :) (maybe I'm grinding axes now) anyway, another method of simulating CWT with DWT's is using spline approximations, a good person to do a Google on is a guy called Michael Unser, who has researched this topic extensively, although some of his papers seem to be reworks of earlier papers... be warning the information is very compacted in some documents! Of course, my choice of wavelet to use (Gabor) may also be open to questions, and it may be possible that another more convenient wavelet may exist to replace it in my project; but it really does appear to be the best suited towards my intended job, that of analyzing musical data. the output of the scalogram is very unique and exactly what I require. Hopefully I've explain this best I can! I'm always open to suggestions in regard to helping me with my problem :) Regards Phill.
moosedude wrote:

   ...

> I've been putting off replying to this, just because I've been trying to > work out different ways I can answer this inside my head, but I'm afraid I > cannot fully answer your question, of how you can squeeze continuous time > into discrete time, it is an extremely complicated subject that I haven't > fully finished researching and it can cross over into several different > fields of study! However I shall try and explain the perspective I am > approaching the problem from..
... [Explanation snipped.] Phill, Thanks for taking the time and expending the effort to explain in such great detail. I haven't digested it yet (first reading), but I'll keep working on it. I hope you find all the right trees in your forest! Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������