# How to Create a Convolution Matrix with a Variable Condition Number (CN)

I want to know the performance of a deconvolution algorithm with different CN, so I'm convolving my signal with different convolution matrices(different CNs) and then applying the deconvolution algorithm, then the error between the original and reconstructed signals is measured.

Is there a proper way to create the convolution matrix with variable CN.

Let's try to think of it intuitively.
Given the LPF what would make the inverse "Hard"?

The sections we won't be able to recover are where the LPF is 0, since there is no inverse for that we can multiply the result by.
Real world LPF won't reach "Real" zero as usually.
But what would make it hard to recover is where there are big ratios between the biggest and the smallest magnitude.
As close and fast your LPF goes to zero (And has magnitudes which are big) the harder the recovery will be.

Now just build analog LPF which this requirements at different scales, digitize it, create the Convolution Matrix and there you have it...

A practical example is given in my answer to 1D Deconvolution with Gaussian Kernel (MATLAB).

The condition number (CN) of a matrix (in $$L_2$$ norm) is the square root of of the ratio of the largest eigenvalue to the smallest eigenvalue. We see here that CN is related to the extreme (largest and smallest) eigenvalues. It looks like we can vary the CN by varying the eigenvalues.

Convolution matrix is a Toeplitz matrix. There are some special Toeplitz matrices such as tri-diagonal and penta-diagonal matrices whose eigenvalues in terms of matrix entries are well-known [1-2]. In these case, by varying the matrix entries we can vary the eigenvalues and in turn the CN.

[1] S. Noschese, L. Pasquini, and L. Reichel, "Tridiagonal Toeplitz matrices: properties and novel applications," Numer. Linear Algebra Appl., 20 (2013), pp. 302-326

[2] G. D. Smith, Numerical Solution of Partial Diﬀerential Equations, 2nd ed., Clarendon Press, Oxford, 1978.