@@ -10,13 +10,17 @@ class IIRFilter:
1010
1111    Implementation details: 
1212    Based on the 2nd-order function from 
13-       https://en.wikipedia.org/wiki/Digital_biquad_filter, 
13+     https://en.wikipedia.org/wiki/Digital_biquad_filter, 
1414    this generalized N-order function was made. 
1515
1616    Using the following transfer function 
17-     H(z)=\frac{b_{0}+b_{1}z^{-1}+b_{2}z^{-2}+...+b_{k}z^{-k}}{a_{0}+a_{1}z^{-1}+a_{2}z^{-2}+...+a_{k}z^{-k}} 
17+         .. math:: H(z)=\frac{b_{0}+b_{1}z^{-1}+b_{2}z^{-2}+...+b_{k}z^{-k}} 
18+                   {a_{0}+a_{1}z^{-1}+a_{2}z^{-2}+...+a_{k}z^{-k}} 
19+ 
1820    we can rewrite this to 
19-     y[n]={\frac{1}{a_{0}}}\left(\left(b_{0}x[n]+b_{1}x[n-1]+b_{2}x[n-2]+...+b_{k}x[n-k]\right)-\left(a_{1}y[n-1]+a_{2}y[n-2]+...+a_{k}y[n-k]\right)\right) 
21+         .. math:: y[n]={\frac{1}{a_{0}}} 
22+                   \left(\left(b_{0}x[n]+b_{1}x[n-1]+b_{2}x[n-2]+...+b_{k}x[n-k]\right)- 
23+                   \left(a_{1}y[n-1]+a_{2}y[n-2]+...+a_{k}y[n-k]\right)\right) 
2024    """ 
2125
2226    def  __init__ (self , order : int ) ->  None :
@@ -34,17 +38,19 @@ def __init__(self, order: int) -> None:
3438
3539    def  set_coefficients (self , a_coeffs : list [float ], b_coeffs : list [float ]) ->  None :
3640        """ 
37-         Set the coefficients for the IIR filter. These should both be of size order + 1. 
38-         a_0 may be left out, and it will use 1.0 as default value. 
41+         Set the coefficients for the IIR filter. 
42+         These should both be of size `order` + 1. 
43+         :math:`a_0` may be left out, and it will use 1.0 as default value. 
3944
4045        This method works well with scipy's filter design functions 
41-             >>> # Make a 2nd-order 1000Hz butterworth lowpass filter 
42-             >>> import scipy.signal 
43-             >>> b_coeffs, a_coeffs = scipy.signal.butter(2, 1000, 
44-             ...                                          btype='lowpass', 
45-             ...                                          fs=48000) 
46-             >>> filt = IIRFilter(2) 
47-             >>> filt.set_coefficients(a_coeffs, b_coeffs) 
46+ 
47+         >>> # Make a 2nd-order 1000Hz butterworth lowpass filter 
48+         >>> import scipy.signal 
49+         >>> b_coeffs, a_coeffs = scipy.signal.butter(2, 1000, 
50+         ...                                          btype='lowpass', 
51+         ...                                          fs=48000) 
52+         >>> filt = IIRFilter(2) 
53+         >>> filt.set_coefficients(a_coeffs, b_coeffs) 
4854        """ 
4955        if  len (a_coeffs ) <  self .order :
5056            a_coeffs  =  [1.0 , * a_coeffs ]
@@ -68,7 +74,7 @@ def set_coefficients(self, a_coeffs: list[float], b_coeffs: list[float]) -> None
6874
6975    def  process (self , sample : float ) ->  float :
7076        """ 
71-         Calculate y[n] 
77+         Calculate :math:` y[n]`  
7278
7379        >>> filt = IIRFilter(2) 
7480        >>> filt.process(0) 
0 commit comments