通过MATLAB代码进行压缩感测


13

我是压缩感测的新手。我阅读了R.Baranuik,Y.Eldar,Terence Tao等人的几篇论文。所有这些论文基本上都提供了其背后的数学细节,例如,稀疏性,RIP,L1范数最小化等。但是,任何人都可以提供MATLAB代码实现压缩感测?

在此先感谢您的帮助。


1
代码请求不在这里。
pichenettes

Answers:


18
  • 大多数代码是纯Matlab代码
  • 程序包中的每个文件夹都包括一个基于特定信号模型的CS恢复算法,以及一个测试该恢复算法的脚本。脚本的名称通常以“ _example.m”结尾
  • Manopt。可能是用来实际制作其他工具箱中包含的算法的工具。

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

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

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

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


8

我想当时我正在回答离题,但是对于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


6

请记住,L1不是唯一的压缩感测方法。在我们的研究中,使用近似消息传递(AMP)取得了更好的成功。我将“成功”定义为更低的错误,更好的相变(能够以更少的观察进行恢复)和更低的复杂度(包括内存和cpu)。

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

我和我的顾问刚写了一篇关于将GAMP用于Analysis CS的论文,其中人们期望在未知矢量x处而不是在未知Wx的线性函数中出现大量零。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.