Background: I'm new to signal processing and I'm reading some papers on B-spline interpolation of digital signals and trying to understand how a computation is derived. If I'm given samples from some function $f_k = f(k)$ as input and I would like to reconstruct it as

$$f(x) = \sum_k f_k \beta^3(x-k)$$

then we need to prefilter the sequence $(f_k)$, since $\beta^3$ is not an interpolating filter. In other words, I need to convolve $\beta^3$ with some other sequence $c_k$ which to satisfies

$$f_k = c_k * \beta^3(k),$$

where $\beta^3(k)$ is the sequence we get by sampling $\beta^3$ at integer points in order to get a reconstruction that passes through my given samples at integer points. To calculate the sequence $(c_k)$, I need find a sequence $\beta^3(k)^{-1}$ that is the inverse of the sequence $\beta^3(k)$ in terms of discrete convolution, i.e.

$$\beta^3(k) * \beta^3(k)^{-1} = \delta_k,$$

so that

$$c_k = f_k * \beta^3(x)^{-1}.$$

One way to find this inverse is to calculate the $z$-transform of $\beta^3(k)$, which I'm denoting below by $B^3(z)$:

$$B^3(z) = z^{-1} + 4z^{-2} + z^{-3}$$

Then the $z$-transform of this "convolution inverse" is:

$$H(z) = 1 / B^3(z) = \frac{1}{z^{-1} + 4z^{-2} + z^{-3}}.$$

My question: Somehow given just the $z$-transform representation above of the inverse filter, it's possible to calculate $c_k$. This can be done in two passes by first doing a causal pass over $f_k$ followed by an anticausal pass to get $c_k$. I've yet to see anywhere explained how from the $z$-transform above we can derive these two steps. Anyone know how this is done?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.