If $l = k$ we get: $$ (M^\dagger M)_{kl} = 1 $$
Otherwise, using Lagrange's trigonometric identities, we get:
$$ \begin{split} (M^\dagger M)_{kl} &= \frac{1}{N} \left [ -\frac{1}{2} + \frac{\sin ((N+1/2)2\pi \frac{(l-k)}{N})}{2 \sin \pi \frac{(l-k)}{N}} + i \frac {cos \pi \frac{(l-k)}{N} - \cos ((N+1/2)2\pi \frac{(l-k)}{N})} {2 \sin \pi \frac{(l-k)}{N}} \right ]\\ \\ &= \frac{1}{N} \left [ \frac{\sin (2\pi (l-k) + \pi \frac{(l-k)}{N}) - \sin \pi \frac{(l-k)}{N}}{2 \sin \pi \frac{(l-k)}{N}} + i \frac{\cos \pi \frac{(l-k)}{N} - \cos (2\pi (l-k) + \pi \frac{(l-k)}{N})}{2 \sin \pi \frac{(l-k)}{N}} \right ] \\ \\ &= 0 \end{split}$$Therefore: $$ M^\dagger M = I $$
Let $M^T$ be the inverting matrix and $\tilde{x}$ be a vector of length $2^{12}$, with a $1$ in the 5th and 30th places and zeros elsewhere. Then: $$ x = M^T \tilde{x} $$ $$ x_i = M^T_{i,5} + M^T_{i,30} $$ $$ x_5 = c_0 = \frac{1+\sqrt{3}}{4\sqrt{2}} $$ $$ x_6 = c_1 = \frac{3+\sqrt{3}}{4\sqrt{2}} $$ $$ x_7 = c_2 = \frac{3-\sqrt{3}}{4\sqrt{2}} $$ $$ x_8 = c_3 = \frac{1-\sqrt{3}}{4\sqrt{2}} $$ $$ x_{29} = c_3 = \frac{1-\sqrt{3}}{4\sqrt{2}} $$ $$ x_{30} = -c_2 = -\frac{3-\sqrt{3}}{4\sqrt{2}} $$ $$ x_{31} = c_1 = \frac{3+\sqrt{3}}{4\sqrt{2}} $$ $$ x_{32} = -c_0 = -\frac{1+\sqrt{3}}{4\sqrt{2}} $$
and zeros elsewhere.
x=np.array([0]*50, dtype=np.float64)
s = 3**.5
x[5] = 1+s
x[6] = 3+s
x[7] = 3-s
x[8] = 1-s
x[29] = 1-s
x[30] = -3+s
x[31] = 3+s
x[32] = -1-s
x *= 1/(4*2**.5)
plt.plot(range(50), x)
plt.show()
And the eigenvalues are $3$, $1$, and $0$.
import numpy as np
N = 10**5
X = np.zeros((3, N))
X[0] = np.random.normal(size=N)
X[1] = np.random.normal(size=N)
X[2] = X[0] + X[1]
cov = np.cov(X)
print('covariance matrix:')
print(np.round(cov, 3))
eigenvalues, eigenvectors = np.linalg.eig(cov)
print('eigenvalues:')
print(np.round(eigenvalues, 3))
print('eigenvvectors:')
print(eigenvectors)
Y = np.matmul(np.transpose(eigenvectors), X)
covY = np.cov(Y)
print('new covariance matrix:')
print(np.round(covY, 5))
Yeigenvalues, Yeigenvectors = np.linalg.eig(covY)
print('new eigenvalues:')
print(np.round(Yeigenvalues, 5))
N = 1000
S = np.random.rand(2, N)
import matplotlib.pyplot as plt
plt.scatter(S[0], S[1])
plt.show()
A = np.array([[1, 2], [3, 1]])
X = np.matmul(A, S)
plt.scatter(X[0], X[1])
plt.show()
X_ = (X - np.mean(X, 1, keepdims=True))
covX = np.cov(X_)
Xeigenvalues, Xeigenvectors = np.linalg.eig(covX)
Y = np.matmul(np.transpose(Xeigenvectors), X_)
Y_ = Y / np.sqrt(Y.var(axis=1, keepdims=True))
plt.scatter(Y_[0], Y_[1])
plt.show()
print('mean: \n', np.round(np.mean(Y_, 1),10))
print('covariance: \n', np.round(np.cov(Y_), 10))