使用 DCT 矩阵的信号的稀疏表示

信息处理 matlab 估计 压缩传感
2022-02-18 15:10:52

我有信号x,我需要知道如何获得对应稀疏基的矩阵Ψ这样x=Ψθ, 在哪里θ是稀疏的。我知道适合我的信号的基础是 DCT 基础。给定信号,如何使用 MATLAB 获得其 DCT 基?

1个回答

如果您知道您的 (N×1) 信号xDCT转换时应该是稀疏的,那么你的Ψ应该是IDCT(逆DCT)。然后你的θ将在 DCT(“频率”)域和您的x将在“时间”域中。

您基本上有两种选择来实现这一点:

  1. 如果您在可以使用 DCT 作为函数而不是实际矩阵的上下文中使用它,这可能会更有效,因为您的编程环境的 DCT 实现在存储和计算方面很可能更有效比明确地做矩阵向量乘积更复杂。在这种情况下,寻找idct函数;

    x = idct(theta);
    
  2. 如果你必须用一个实际的矩阵向量乘积来实现它,你可以获得矩阵Ψ通过转换适当维度的单位矩阵:

    Psi = idct(eye(N));
    x = Psi * theta;
    

    预计涉及的操作Psi * theta将比idct(theta).