by pierrot Fri Jan 03, 2020 4:22 pm
This is a bit of a math intensive random thought, but I was working on some DSP recently, and was looking at the bilinear transform method of IIR (infinite impulse response) filter design. It's just a way to transform the s-plane (complex representation of the Laplace domain) to the z-plane (analogous to the Laplace domain, but for a discrete system). So it's a transform on a transform, but it's just one of the mappings that allows for conversion of a continuous-time linear system transfer function to a discrete-time system TF. The mappings need to, ideally, maintain system stability, though; in the s-plane that means that the poles of the continuous-time system TF need to fall in the left half of the plane (left of the imaginary axis; negative real part), but for discrete-time systems, poles need to be within the unit circle for the system to be stable. This also means the imaginary axis of the s-plane needs to be mapped onto the unit circle. One really simple mapping is just to transform the s-plane poles into a vector, as with a first-order system: z = e^(sT), where "s" is the complex pole location, and "T" is the sampling time interval. Using the laws of exponentials, it's trivial to show that the real part of the pole becomes the magnitude of the vector, and that any negative real number will result in a magnitude less than one (eg. e^-(rT) = 1/e^(rT)). So system stability is maintained. The imaginary part of the pole becomes the phase, but for this impulse invariance method, there's a many-to-one mapping of the imaginary axis to the unit circle, which means there are infinite spectral copies of the system response over the frequency band from zero to half the sampling frequency. That's fine if the system is band-limited, but it means it's limited to applications of low-pass, and band-pass filters. This is where the bilinear method comes in. It maps the entire imaginary axis of the s-plane (from 0 to infinity) to the perimeter of the unit circle from zero to pi (0 to negative infinity --> 0 to -pi). This removes the need for band-limiting, since it's a one-to-one mapping of the entire frequency range, but it does cause a "frequency warping." So high-pass and band-rejection filters can be implemented with the bilinear method, but it requires 'pre-warping' for practical applications.
If you made it this far, the tl;dr is basically that, without really giving it any consideration, i wondered if bilinear texture filtering could actually be using IIR filters designed with the bilinear transform method. obviously the answer is no, it's just a bilinear interpolation (I did look into it). I say, "obviously," because the usefulness of that type of filter would be limited to band-rejection. Other transformation methods would be better for low-pass and band-pass filtering. Also, up-sampling isn't exactly filtering. So, once again, computer science screws the pooch on naming. I saw a note, in relation to the bilinear "filter," about it being a "weighted average" of inputs, though; which is really code for an FIR (finite impulse response) filter. FIR filters don't use feedback, and can have much steeper rolloff in the transition band, with much less design work, because the order of the filter is determined by the number of input samples. So an n-tap (-sample, -bit register) FIR filter has n-th order (n*20 decibel decay per decade). By contrast, the order of an IIR filter is typically determined by the number of poles of the system. That shit gets wild after about four poles. It's all just polynomials, either way, but there are a lot of simple tricks with FIR filters, so it's a bit easier to make a nearly ideal filter. Plus the impulse response has to have even symmetry about the (n-1)/2 -th input for linear phase. It can also be shifted, and symmetric about zero, which results in zero phase, but that's non-causal, so it can't really be used for real-time applications.
Anyway, it's kind of a stupid random thought, but I needed to get it off my chest.