Достаточно просто построить его самостоятельно:
# pick a size
N = 99
# build the matrix
n, k = np.ogrid[1:2*N+1:2, :N]
dctmtx = 2 * np.cos(np.pi/(2*N) * n * k)
# create random data for testing
x = np.random.normal(size=(N, N))
# check
from scipy import fftpack
np.allclose(fftpack.dctn(x), dctm.T @ x @ dctm)
# True
Примечание: масштабирование может быть предметом соглашения. Здесь я выбрал один, чтобы точно соответствовать scipy.fftpack.dctn
; Matlab может использовать или не использовать одинаковое масштабирование.