[转载]OMP StOMP 和CoSaMP

OMP StOMP 和CoSaMP

OMP的伪代码:

初始化:初始解为0,初始残差为观察信号,迭代次数k=0,初始支持集合为0。

迭代:(Fa的转置)×残差=y

           找出y中最大的分量

           更新支持集合

           在支持集合上求最小二乘解作为近似解

           由近似解得到残差

结束:达到终止设定,比如残差小于某一阈值。

 

StOMP的伪代码:

初始化:初始解x=0,初始残差为观察信号,迭代次数k=0,解中非零元的位置(相当于支持集合吧)。

迭代:(Fa的转置)×残差=y

          找出y里面最大的几个分量,

          用硬阈值来限定y,

           更新支持集合

           在支持集合上求Fa的伪逆,乘以观察信号后得到近似解,也就是(Fa在支持集合中的分量的伪逆)×观察信号=b

           由近似解得到残差

结束:达到事先设定的迭代次数。

 

CoSaMP的伪代码:

初始化:初始支持集合为0,残差等于观察信号本身,迭代次数k=0;

迭代:(Fa的转置)×残差=y       组建信号代理,认为x中s个能量通过y表现了出来

         找出y里面最大的几个分量

         更新支持集合

         (Fa在支持集合中的分量的伪逆)×观察信号=b

          用阈值来限定b,小于阈值的设为0。

          重新修建支持集合和近似解,小于阈值的b对应的那些被踢出去

          由近似解求得残差

结束:达到终止设定。

你可能感兴趣的:(Stomp,OMP,CoSaMP)