[SOLVED] Bireciprocal lattice wave digital filter

Status
Not open for further replies.

bubulescu

Member level 3
Joined
Sep 10, 2009
Messages
65
Helped
12
Reputation
24
Reaction score
12
Trophy points
1,288
Visit site
Activity points
1,897
Hello

I am trying to model a bireciprocal Cauer filter in LTspice but I don't get the expected results. More precisely, using

γ=(re(s)−1)/(re(s)+1)

where re(s) is the realpart of the pole, gives this result:

**broken link removed**

Among the few references I have, one that gives a numerical example is a thesis, "Design and Realization Methods for IIR Multiple Notch Filters and High Speed Narrow-band and Wide-band Filters, L. Barbara Dai" and, simply by looking at the numbers and comparing them with what I had, it seemed as if the poles need to be "normalized" to the single real pole, s[(N+1)/2]. That's what I did:

γ=(re(s)/s[(N+1)/2]−1)/(re(s)/s[(N+1)2]+1)

so, even if the numerical values still differed, but a not as before, I got this result:

**broken link removed**

The example used here is not the one used in the thesis, but I seem to get good results (I cannot verify them) with either stop-band, or transition-band optimizations and for any (odd) order.

So, my question is: is this the way to do it, "normalize" poles by dividing each to the single, real pole?

---

Just for the sake of comparison, here are 3 results using the same settings as in the thesis (As=68=>Ap,ωs=2/3=>ωp,f0=2), between a normal Cauer IIR filter (V(o3)), Barbara Dai's non-quantized coefficients (V(o1)) and my coefficients used with the "normalizing" described above (V(y1), γ1=−0.0912405,γ2=−0.3412645,γ3=−0.729655):

**broken link removed**

While not there (too may traces makes comparison difficult), if the 11 bit quantized values are used for V(o1), the response actually gets closer to the IIR.


Anticipated thanks,
Vlad
 
Last edited:

In the meantime someone gave me the answer: the first formula, γi=(σi−1)/(σi+1) is correct, but the determination of the poles in the s-domain is wrong, in that all the four parameters, As, Ap, ωs and ωp, need to be specified such that the resulting N is closest to integer, without using
Code:
ceil()
. In other words, the best approach is to impose N and deduce one of the four parameters from the other three.

With the same example from the thesis (p.27) and a quick change in my formulas, I get this result:

![evrika!](**broken link removed**)

where the blue trace is from the thesis and the black one - mine. Even if there still are differences, they are minor, closer to the truth and probably due to one of the other 2 possible optimizations (which are too difficult to achieve with LTspice). Either way, this is the right path.
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…