COMPGROUPS.NET | Search | Post Question | Groups | Stream | About | Register

Numerical Errors when calculating a Minimum version FIR Filter

• Email
• Follow

```Hello everyone,

I am triying, using Matlab, to calculate the Minimum version of two
FIR filters whose quotient will be the numerator and denominator of an
IIR filter that I want to reduce using the balreal() function of
Matlab.

So far I've been very unsucessful in this task, mainly because I am
not able to get completely stable filter after the calculation. First
I tried using polystab(), which now I know breaks with more than 75
coefficients (I use 128), then tried using rceps() to no avail, and
then I tried to implement my own script using the Discrete Hilbert
Transform out of the algorithm found in the following page:

http://www.nauticom.net/www/jdtaft/minphase.htm

which after some investigations, seems to very very similar to the
algorithm in rceps() except for using an exponential instead of sine
and cosine as in the proposed algorithm.

After triying these three methods the balreal() function claims that
the system is not stable, and I've confirmed that using the zplane()
function, which shows some roots very near, but outside, the unit
circle.

Could anyone please point me to a better way to calculate the Minimum
Phase versions? Maybe I am doing something wrong?

A not so related question: Comparing the block diagram from the URL
above, and whatever is done in the rceps() function, seems that the
block diagram is wrong, as in the rceps() function they do the
following operation

exp(fft(wn.*xhat(:))

while the block diagram they do something like

cos(imag(fft(wn.*xhat(:))))+i*sin(imag(fft(wn.*xhat(:))))

and I think it should be

cos(real(fft(wn.*xhat(:))))+i*sin(imag(fft(wn.*xhat(:))))

Thanks for the help,
Pepe
```
 0
Reply elventear (1) 8/15/2003 4:45:15 AM

See related articles to this posting

0 Replies
465 Views

Similar Articles

12/7/2013 1:37:03 AM
[PageSpeed]