Algebraic minimum-phase variant of sinc function

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

...O.K. thought about it. and arrived at: not having zeros in the freq-response is a necesarry condition for a FIR to have a (strictly) stable inverse because zeros in the freq-response are zeros on the unit-circle in z-domain. but it's not a sufficient condition to have a stable inverse because it neglects the possibility of having zeros outside the unit-circle. the simple FIR b0=1, b1=2 has a zero at z=-2 in the z-plane and nonzero magnitude response at all frequencies. its inverse b0=1, a0=1, a1=2 has a pole at z=-2 and is clearly unstable. you surely can always find a stable filter which undoes the magnitude-response of any filter, provided the magnitude-response is nonzero at all frequencies - but this filter might be unable to undo the phase-response, so its not really a deconvolution. i think, a necesarry and sufficient condition for a (FIR) filter to have a stable inverse is to have all of its zeros inside the unit-circle - and that's, once again, the minimum-phase property.
My website: rs-met.com, My presences on: YouTube, GitHub, Facebook

Post

You are right, thanks for the note... Now I'll have to think about additional condition.

IIR part of the filter IS a deconvolution - just see the frequency response drawing function: it DIVIDES response by sum of z-shifted "a" coefficients. During deconvolution using FFT you basically do the same.

It seems that feedback-topology deconvolution requires additional conditions (beside non-zero freq response).
Image

Post

Aleksey Vaneev wrote: IIR part of the filter IS a deconvolution
what i meant was: the stable filter which undoes the magnitude response of some original FIR-filter is not necessarily a deconvolution for this particular filter. this is only the case if it is the inverse filter of the origninal one. but in order to ensure stability, you might have to reflect some poles about the unit circle, such that your stable magnitude-inverting filter is not an exact inverse of the original anymore. so your net result will be some halfway deconvolution which leaves with an allpass-filtered deconvolved signal.
My website: rs-met.com, My presences on: YouTube, GitHub, Facebook

Post

braindoc wrote: this is only the case if it is the inverse filter of the origninal one.
I was referring only to such case. Swap FIR and IIR parts - and you have an inverse filter which produces 'unity gain' (undoes all phase and magnitude changes).

On the other hand you may design ANY FIR filter and apply it in IIR feedback topology to have an exact inverse filter - of course, as long as it is stable.

By the way, IIR stability criteria can be also seen from the "feedback amount" point of view. When you are feeding back amount of original signal with multiplier >= 1.0, filter is unstable from practical point of view.

So, all we have to do is to extended this rule to any filter length, and be pretty safe.

For such stability analysis we may assume that our signal is a constant DC signal of magnitude 1.0. We also assume that our filter does not have any particular form (i.e. it is just a set of feedback coefficients). So, now overall stability criteria can be estimated.
Image

Post

Aleksey Vaneev wrote: By the way, IIR stability criteria can be also seen from the "feedback amount" point of view. When you are feeding back amount of original signal with multiplier >= 1.0, filter is unstable from practical point of view.
what about b0=1, a0=1, a1=0.8, a2=0.8 - unstable, i'd say.
My website: rs-met.com, My presences on: YouTube, GitHub, Facebook

Post

braindoc wrote:what about b0=1, a0=1, a1=0.8, a2=0.8 - unstable, i'd say.
Have you tried it in practice?
Image

Post

BTW, here's a part of the text by Apogee Technology, Inc. This stability check is a bit more extensive (includes relation between coefficients). It also has to be found how to extend it to higher order filters.

4. Filter Stability Conditions
For a second order filter, two conditions need to be satisfied to ensure filter stability. A filter is said to be stable in the z-domain if the roots/poles of the filter lie inside the unit circle. This definition of stability can be translated in terms of the filter coefficients to take the form:
• |a2| < 1
• |a1| < 1+a2 i.e. {a1 < 1+a2} AND {a1 > -1-a2}
For a first-order filter, the stability condition that needs to be satisfied is that the pole of the filter lies within the unit circle. Again writing in terms of the coefficients just designed, the condition can be given as:
• |a1| < 1
The first-order and second-order systems are stable if and only if the requisite conditions have been satisfied.


From the Fourier analysis point of view, this constaint has something to do with phase or group delay, as well (something like: it is impossible to inverse certain phase changes without breaking causality constraint).
Image

Post

Have you tried it in practice?
i don't have my programming environment at hand, but i'll try it per hand:

h[0] = 1
h[1] = 0.8
h[2] = 0.8*0.8 + 0.8*1.0 = 1.44
h[3] = 0.8*1.44 + 0.8*0.8 = 1.5616

...the impulse response grows and grows and grows
My website: rs-met.com, My presences on: YouTube, GitHub, Facebook

Post

A correction (after a bit of thought) of this 'group delay' constraint (only a speculation maybe, but sounds logical).

Your filter a0=1, a1=2 IS valid, but if you study its group delay near Nyquist - it changes abruptly thus the group delay is very high (probably close to be considered infinite - that's why inversion of this group delay is infinite as well).
Image

Post

braindoc wrote:
Have you tried it in practice?
i don't have my programming environment at hand, but i'll try it per hand:

h[0] = 1
h[1] = 0.8
h[2] = 0.8*0.8 + 0.8*1.0 = 1.44
h[3] = 0.8*1.44 + 0.8*0.8 = 1.5616

...the impulse response grows and grows and grows
It's a naive check. Filters may become steady after such iterations (that may be only an initial front).

From group delay analysis I've proposed this filter IS stable.
Image

Post

Yet another correction :) I have to think about this group delay check more... (seems like my test application was giving invalid result for phase response at Nyquist)

Can anyone check the phase response of a0=1 a1=2 filter at Nyquist ? I get -pi or pi. If it is really -pi then group delay check can be considered logical - in that case group delay is indeed infinite, and so its inversion leads to an infinite signal front as well.

edit: Ah, it is "pi", of course. But this leads me to think about phase response's first derivative (group delay) at Nyquist - probably it is exactly infinite. Beside that if a0=1 and a1=1, phase at Nyquist is not even obtainable.

edit2: group delay at Nyquist (unfortunately for this check), is not infinite (it is equal to 2).
Image

Post

at the MatLab-prompt:
>> freqz([1],[1 2])
>> zplane(roots([1]),roots([1 2]))
gives:

Image

and:

Image
My website: rs-met.com, My presences on: YouTube, GitHub, Facebook

Post

if you are concerned with alternative stability-checks (other than factorization and checking for poles outside the unit circle), maybe the levinson-durbin recursion is a hot candidate. it converts direct-form coeffs into reflection-coeffs which are esured to produce a stable filter when their magnitude is smaller than 1. ...well, we are drifting far far off topic now...
My website: rs-met.com, My presences on: YouTube, GitHub, Facebook

Post

braindoc, could you plot group delay as well?

Anyway, since min-phase variant is not readily available, we can discuss other things meanwhile. :)
Image

Post

Here's a topic for discussion: Why not just oversample?

Post Reply

Return to “DSP and Plugin Development”