Dirac-DCT dictionary

Definition
The Dirac-DCT dictionary is a two-ortho dictionary consisting of the union of the Dirac and the DCT bases.

This dictionary is suitable for real signals since both Dirac and DCT are totally real bases \(\in \RR^{N \times N}\).

The dictionary is obtained by combining the \(N \times N\) identity matrix (Dirac basis) with the \(N \times N\) DCT matrix for signals in \(\RR^N\).

Let \(\Psi_{\text{DCT}, N}\) denote the DCT matrix for \(\RR^N\). Let \(I_N\) denote the identity matrix for \(\RR^N\). Then

\[\DD_{\text{DCT}} = \begin{bmatrix} I_N & \Psi_{\text{DCT}, N} \end{bmatrix}.\]

Let

\[\Psi_{\text{DCT}, N} = \begin{bmatrix} \psi_1 & \psi_2 & \dots & \psi_N \end{bmatrix}\]

The \(k\)-th column of \(\Psi_{\text{DCT}, N}\) is given by

(1)\[\psi_k(n) = \sqrt{\frac{2}{N}} \Omega_k \cos \left (\frac{\pi}{2 N} (2 n - 1) (k - 1) \right ), n = 1, \dots, N,\]

with \(\Omega_k = \frac{1}{\sqrt{2}}\) for \(k=1\) and \(\Omega_k = 1\) for \(2 \leq k \leq N\).

Note that for \(k=1\), the entries become

\[\sqrt{\frac{2}{N}} \frac{1}{\sqrt{2}} \cos 0 = \sqrt{\frac{1}{N}}.\]

Thus, the \(l_2\) norm of \(\psi_1\) is 1. We can similarly verify the \(l_2\) norm of other columns also. They are all one.

Theorem
The Dirac-DCT dictionary has coherence \(\sqrt{\frac{2}{N}}\).
Proof

The coherence of a two ortho basis where one basis is Dirac basis is given by the magnitude of the largest entry in the other basis. For \(\Psi_{\text{DCT}, N}\), the largest value is obtained when \(\Omega_k = 1\) and the \(\cos\) term evaluates to 1. Clearly,

\[\mu (\DD_{\text{DCT}}) = \sqrt{\frac{2}{N}}.\]
Theorem

The \(p\)-babel function for Dirac-DCT dictionary is given by

\[\mu_p(k) = k^{\frac{1}{p}} \mu \Forall 1\leq k \leq N.\]

In particular, the standard babel function is given by

\[\mu_1(k) = k\mu\]
Proof
TODO prove it.

Hands-on with Dirac DCT dictionaries

ExampleConstructing a Dirac DCT dictionary

We need to specify the dimension of the ambient space:

N = 256;

We are ready to construct the dictionary:

Phi = spx.dict.simple.dirac_dct_mtx(N);

Let’s visualize the dictionary:

imagesc(Phi);
colorbar;
../../_images/demo_dirac_dct_1.png

Measuring the coherence of the dictionary:

>> spx.dict.coherence(Phi)

ans =

    0.0884

We can cross-check with the theoretical estimate:

>> sqrt(2/N)

ans =

    0.0884

Let’s construct the babel function for this dictionary:

mu1 = spx.dict.babel(Phi);

We can plot it:

plot(mu1);
grid on;
../../_images/demo_dirac_dct_babel.png

We note that the babel function increases linearly for the initial part and saturates to a value of 16 afterwards.