通过 MATLAB 代码进行压缩感知

信息处理 matlab 压缩传感 优化
2021-12-23 06:15:19

我是压缩感知主题的新手。我阅读了 R.Baranuik、Y.Eldar、Terence Tao 等的几篇关于它的论文。所有这些论文基本上都提供了它背后的数学细节,即稀疏性、RIP、L1 范数最小化等。但是,谁能提供 MATLAB 代码实现压缩感知?

提前感谢您的帮助。

4个回答
  • 大部分代码是纯 Matlab 代码
  • 包中的每个文件夹都包含一个基于特定信号模型的 CS 恢复算法,以及一个测试该恢复算法的脚本。脚本的名称通常以“_example.m”结尾
  • 曼奥普特可能是您用来实际制作包含在其他工具箱中的算法的东西。

流形上的优化是解决非线性优化问题的强大范例。

该工具箱实现了几种算法来计算冗余字典中的稀疏扩展并解决稀疏正则化(以及 TV 正则化)的逆问题。

但所有这些以及更多内容都包含在此工具箱列表中

我发现困难的部分是找到伪代码——这就是他们实际描述算法的地方。以下是一些包含伪代码的算法示例:

我想我在这里回答题外话,但是对于 L1 优化方法,我发现 YALL1 ( http://yall1.blogs.rice.edu/ ) 和 SPGL1 ( http://www.cs.ubc.ca/ ~mpf/spgl1/ ) 非常有用和高效的软件包。TFOCS ( http://cvxr.com/tfocs/ ) 可能有点难以使用,但应该非常灵活。还有 CVX ( http://cvxr.com/cvx/ ),它可以很容易地直接在代码中输入凸优化问题,但解决压缩感知特定类型的问题要慢得多,因为它是一个非常通用的求解器。

Sparselab ( http://sparselab.stanford.edu/ ) 中也有一些重建算法可用。

此处列出了更大的稀疏重建代码列表:https ://sites.google.com/site/igorcarron2/cs#reconstruction

请记住,L1 并不是压缩感知的唯一方法。我们的研究中,我们在近似消息传递 (AMP) 方面取得了更大的成功。我将“成功”定义为更低的错误、更好的相变(通过更少的观察来恢复的能力)和更低的复杂性(内存和 cpu)。

Approximate Message Passing 算法建立了一个贝叶斯框架来估计大规模线性系统中的未知向量,其中线性系统的输入和输出由概率模型确定(例如“这个向量是用噪声测量的”、“这个向量有一些零”)。由 Donoho 伪造的原始AMP 方法已由Rangan改进为具有Matlab 代码的广义近似消息传递. 输入和输出几乎可以是任意概率密度函数。在我们的研究中,我们发现 GAMP 通常比 L1 凸方法和贪心方法(例如正交匹配追踪)更快、更准确、更稳健(阅读:更好的相变曲线)。

我的顾问和我刚刚写了一篇关于使用 GAMP 进行分析 CS 的论文,其中人们期望大量的零,不是在未知向量 x 中,而是在未知向量 Wx 的线性函数中。

您可能还想查看 Matlab UNLocBox:http ://unlocbox.sourceforge.net 演示页面上有 4 个压缩传感脚本: http: //unlocbox.sourceforge.net/doc/demos/index.php