1

I'm performing two filtering steps in series, in Matlab. First a Butterworth filter, then a ChebyschevII filter. The functions butter() and cheby2() return the transfer function coefficients b (numerator coefficients), and a (denominator coefficient), for each filter.

I have a theoretical question. How must I combine the b's and a's to get a new overall set of b's and a's that reflects the transfer function of the final series filter ensemble? Is it a multiplication of the b's and a multiplication of the a's? Their convolution?

Thank you!

I've attempted both multiplication and convolution and both seem to yield quite similar results when I visualize the magnitude response - I'm not sure if this is just coincidence but I'd like to know what is the theoretically correct method, or if I'm way off and neglecting some other dimension of the problem.

1 Answers1

2

Its a multiplication of the transfer functions, not coefficients. If the filter1_a=[1 2 3]; filter1_b=[3 2 1] and filter2_a=[5 6 7]; filter2_b=[7 6 5] you can not do filter_total_a=filter1_a.*filter2_a!

Do you know what the coefficients are? They are terms of a polynomial on s, so it means that filter1 = (s^2+2s+3)/(3s^2+2s+1).

This means that for my example, filter_total_a= 5s^4+16s^3+34s^2+32s+21, or in MATLAB. filter_total_a=[5 16 34 32 21].

To be fair, polynomial multiplication can be also understood as convolution of the terms, but don't confuse this with the time<->frequency relationship of filters and Fourier transforms.

So yes, filter_total_a=conv(filter1_a,filter2_a), but because of properties of polynomial multiplication, not Fourier transforms. (albeit again, can be understood as the same things, but this is not a good starting point for a novice in the field).

Ander Biguri
  • 35,140
  • 11
  • 74
  • 120