本文主要是介绍压缩感知OMP(正交匹配追踪法 Orthogonal Matching Pursuit) 算法python实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
论文原文:
% 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,未选中就是-1index[i]= -1result=np.zeros((N,1))for j in range(K): #迭代次数product=np.fabs(np.dot(Phi.T,residual))pos=np.argmax(product) #最大投影系数对应的位置 index[pos]=1 #对应的位置取1my=np.linalg.pinv(Phi[:,index>=0]) #最小二乘 a=np.dot(my,y) #最小二乘,看参考文献1 residual=y-np.dot(Phi[:,index>=0],a)result[index>=0]=aCandidate = np.where(index>=0) #返回所有选中的列return result, Candidate
一维信号重建率:
二维图片重建效果:
试验完整代码:
https://github.com/sikaozheyouxi/CS_LIB
这篇关于压缩感知OMP(正交匹配追踪法 Orthogonal Matching Pursuit) 算法python实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!