On Tue, May 11, 2010 at 03:36:08PM -0700, Mark Knecht wrote:
Actually though, as a test of an idea I had and just
because I've got
the data here, I'm using stock market data, decomposing the data into
bands of energy if you will, and then summing the bands back together
to see how close I come to the original data. It works fairly well
most of the time, but stock data can have big directional moves at
times which appears as a big transient event. When those events
complete then the slower filter bands ring and cause large
displacements in the output.
So you want a set of filters with the following properties:
1. each filter has a frequency response with a shape that allows
an intuitive interpretation as a 'bandpass', i.e. a range of
frequencies, and
2. the sum of the filter outputs equals the original input.
This is a *hard* problem. Basically none of the classical filter
types have these properties. There are filter sets that can do
this but they are quite esoteric.
'Ringing' is not really a problem here, each of the individual
filters may ring, as long as this is cancelled by the others
when you add the outputs.
An FFT will provide a set of filters having property (2), but
each filter has a sin(x)/x shape, which is not really a bandpass.
You can 'improve' the shape by windowing, but that destroys (2).
And anyway using an FFT like this is a 'block' operation - how
a sample is treated depends on its position within the block.
Windowing requires overlapping blocks, and they won't add up
to the original input.
I was thinking about tearing into the code for
something like Jamin to look at what's done there. Maybe there are
better examples for me to use though?
Jamin's FFT based filter is not really a filter, it's a vocoder
being used as a filter and it has side effects.
Now if the purpose of the filtering is to extract 'features' of
the data, you really don't need property (2). And given the
nature of stock market data, I suspect that classic audio filters
are not the right way to extract such features. I'd have a look
at wavelet filters for example.
Ciao,
--
FA
O tu, che porte, correndo si ?
E guerra e morte !