Re: FIR filters
Hi Michael,
We may be going off in slightly different directions so I'll try to clarify. When I used the term Hilbert transform, which likely I should not have, I was trying to account for the generation of the analytic signal upon transforming back to the time domain, as the Hilbert transform relates the real and imaginary parts of an analytic signal. This has nothing to do with using the Hilbert transform to relate the log magnitude and phase of a minimum phase system. I'll take another crack at the recipe.
Start with the impulse response, let's call it h.
Take the DFT of h of size N and call it H.
Put the positive frequency values of H in one end of an array G of size M where M > N (I've been using M = 8*N). The rest of G is filled with 0s. This has two effects when G gets transformed back: the signal is upsampled by M/N (sinc interpolation) and the time domain result will be an analytic signal since the negative frequency values in H were set to 0. This second effect is the implicit "Hilbert transform".
For each frequency band{
Multiply G with that band's Gaussian window.
Take the IDFT of the product, which is a complex signal in the time domain.
Plot the log magnitude.
}
I can send you the R code, for what it's worth, but you can probably code this up in Matlab in about 10 minutes.
Best,
--Frank
I then used the Hilbert Transform, minimum phase filter design approach to create the impulse responses for each band.
Also, a colleague here in Sydney showed me how using two IDFT's per gaussian band - with one as is and the other pre-multiplied by complex "i" for a 90 deg phase shift - gives two impulse responses that can be combined to create a nice envelope follower.
Hi Michael,
We may be going off in slightly different directions so I'll try to clarify. When I used the term Hilbert transform, which likely I should not have, I was trying to account for the generation of the analytic signal upon transforming back to the time domain, as the Hilbert transform relates the real and imaginary parts of an analytic signal. This has nothing to do with using the Hilbert transform to relate the log magnitude and phase of a minimum phase system. I'll take another crack at the recipe.
Start with the impulse response, let's call it h.
Take the DFT of h of size N and call it H.
Put the positive frequency values of H in one end of an array G of size M where M > N (I've been using M = 8*N). The rest of G is filled with 0s. This has two effects when G gets transformed back: the signal is upsampled by M/N (sinc interpolation) and the time domain result will be an analytic signal since the negative frequency values in H were set to 0. This second effect is the implicit "Hilbert transform".
For each frequency band{
Multiply G with that band's Gaussian window.
Take the IDFT of the product, which is a complex signal in the time domain.
Plot the log magnitude.
}
I can send you the R code, for what it's worth, but you can probably code this up in Matlab in about 10 minutes.
Best,
--Frank