在视频压缩感知领域,信号的稀疏表示始终都是一个很核心的问题,在OMP算法和BCS-SPL算法等算法中,都会涉及到DCT变换矩阵的构造,但是其往往和我们所了解的DCT变换的定义(DCT变换的定义可以参考之前的博文离散傅立叶变换DFT和离散余弦变换DCT)有所不同。
考虑到这些算法代码中DCT矩阵的构造都显得晦涩难懂而且基于定义构造的DCT变换矩阵和它们的功能又完全一样(且更容易理解),因此我们从DCT的定义出发给出DCT变换矩阵的构造代码。
一维DCT变换矩阵
参考之前的博文离散傅立叶变换DFT和离散余弦变换DCT中一维DCT的定义可以得到如下实现代码(直接拷贝保存为.m
文件即可在MATLAB环境中使用):
function [Phi] = DCT_1D_Matrix(m)
%
%
% 该函数产生1维DCT-II变换矩阵,左乘对信号进行DCT-II变换,转置后左乘对信号进行IDCT-II逆变换
% 输入参数:
% m:信号的长度
% this function return 2D DCT-II transform matrix,
%
% left multiply: transform the signal into dct domain
%
% transpose and left multiply: transform the coefficient into
% pixel domian
%