压缩感知实验-OMP算法Python实现
一维图信号重建
# -*- coding: utf-8 -*-
"""
Created on Wed Sep 23 21:46:43 2020
@author: chen
"""
import numpy as np
def Omp(y,A,K):
cols=A.shape[1]#传感矩阵A的列数 800
res=y #初始化残差r0 值为y
indexs=[]#用来保存索引的数组
A_c=A.copy()#传感矩阵A的拷贝
#进行K次迭代
for i in range(0,K):
products=[]#用来保存每次迭代产生的内积
#对于传感矩阵A中每一列进行计算
for col in range(cols):
#传感矩阵A第col列与残差的内积 (32,).T*初始残差y(32,)
products.append(np.dot(A[:,col].T,res))#获得一个内积 放入products数组
#一轮迭代products中有800个值
index=np.argmax(np.abs(products)) # 每列计算完成后 在products找最大内积并返回列索引值
indexs.append(index)#将最大列索引值加入索引数组indexs[]
#使用索引集在传感矩阵中获得子集
inv=