论文原文:
% Signal Recovery From Random Measurements Via Orthogonal Matching
% Pursuit,IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 53, NO. 12
实现代码:
def cs_omp(y,Phi,N,K):
residual=y #初始化残差
index=np.zeros(N,dtype=int)
for i in range(N): #第i列被选中就是1,未选中就是-1
index[i]= -1
result=np.zeros((N,1))
for j in range(K): #迭代次数
product=np.fabs(np.dot(Phi.T,residual))
pos=np.argmax(product) #最大投影系数对应的位置
index[pos]=1 #对应的位置取1
my=np.linalg.pinv(Phi[:,index>=0]) #最小二乘
a=np.dot(my,y) #最小二乘,看参考文献1
residual=y-np.dot(Phi[:,index>=0],a)
result[index>=0]=a
Candidate = np.where(index>=0) #返回所有选中的列
return result, Candidate
一维信号重建率:

二维图片重建效果:

试验完整代码:
本文介绍了一种基于正交匹配追踪(OMP)的压缩感知信号重建算法,并提供了详细的Python实现代码。通过该算法,可以有效地从随机测量中恢复信号,适用于一维信号和二维图片的重建。
258





