hallo together, today I have a little question: Is it possible to turn a common FIR-bandpass into a bandpass with 90 degree phase shift? And if possible, how to do? My usual procedure: 1. make a lowpass for the lower frequency edge (sin(x)/x * Blackmann) 2. make a second lowpass for the upper frequency edge (also sin(x)/x * Blackmann) 3. normalize both lowpasses 4. turn the second lowpass per spektral inversion to a highpass 5. add both passes, this makes a band reject pass 6. turn it into a band pass by spektral inversion This makes all the taps for a decent FIR-bandpass, it works fine for even as well as for odd tap numbers, but without any phase shift. The output is limited to the desired frequency span as requested, so I hope it should be possible to add a 90 degree phase shift to it (a la Hilbert) A decent testbench for the a.m. filter I already have written for myself, but not yet for a added Hilbert transformation. so, has anyone a nice idea for this? kind regards W.S.
Iowa Hills Hilbert Filter Designer Ver 2.3 (free) I hope, this helps.
Sorry, no. I already know the apps from IOWA. My intention is rather, to be able to calculate the taps at runtime in the device. So I need the algorithm raher than the output of a IOWA filter app. thanks and kind regards W.S.
Moin, Maybe this recipe works out for you: All frequencies between 0..1(=Fsample/2) Lower Band edge: Fa Upper Band edge: Fb Calculate: Fshift=(Fa+Fb)/2 Flp=(Fb-Fa)/2 Design Lowpass filter with Flp as usual. Index of its coefficents goes from -k...0...+k. For the Quadrature-BP: Multiply each of its coefficients by sin(pi*k*Fshift) (for the Inphase-BP: Multiply with cos(pi*k*Fshift)) Gruss WK
Octave has an open remez algorithm for hilpert FIR http://octave.sourceforge.net/signal/function/remez.html
derguteweka wrote: > Maybe this recipe.. thanks a lot, I will try. kind regards W.S.
Carlton F. wrote in post #6841692: > Iowa Hills Hilbert Filter Designer I DO know this app. But: meanwhile I found the solution myself. Just for your interest: 1. calculate a usual band pass (as I already described) using sin(x)/x - this gives you a mirror symmetric filter kernel, which does not alter the phase. Let us call the result Y[0..M-1] 2. calculate the same band pass using (1-cos(x))/x instead of sin(x)/x - this gives you a point symmetric filter kernel, which shifts the phase and makes a 90 degree phase shift. Let us call the result Z[0..M-1] 3. assume, each tap is a point in the Y,Z lane. Now you can turn this point for a angle of your desire according to the known CORDIC procedure. This gives you (in the Y array) the final kernel with a phase shift of your choice. The new values in the Z array are not used. W.S.
but you did not really take all of this 6 years to find the solution, did you? I wonder which is the application which require this function?
Carlton F. wrote in post #6841692: > Iowa Hills Hilbert Filter Designer, hope it will help It was just SPAM that and pushed the thread.
Tobi wrote: > I wonder which is the application which require this function? When you want to receive SSB transmissions, you need to suppress the unwanted side band. For this you can use a narrow quartz filter if you design a analog receiver - but designing a digital receiver you need to use a I/Q mixer and apply to one of the resulting data streams a additional 90 degree phase shift - or apply a phase shift of +45 degree to one stream and a phase shift of -45 degree to the other stream (this is in short called the phase methode). But it is rather uncomfortable and a waste of clock cycles to apply a straight delay to one stream and a 90 degree Hilbert transformation to the other stream, so I decided to combine the band pass filtering and the phase shift to avoid wasting precious clock cycles. That's it. W.S.
Band stop filter has two pass-bands and separated by a small frequency called notch frequency where it has zero output.
The problem is solved. Looking back I see, that the solution is easy. Simply calculate a complex filter, the real component is mirror-symmeteric and the imaginary component is point-symmetric and then rotate it using CORDIC or similar. So every phase shift is possible. So this thread may be closed. W.S.
Please log in before posting. Registration is free and takes only a minute.
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.