for times=1:m; % 迭代次数
for col=1:N; % 恢复矩阵的所有列向量
product(col)=abs(T(:,col)'*r_n); % 恢复矩阵的列向量和残差的投影系数(内积值)
end
[val,pos]=max(product); % 最大投影系数对应的位置
Aug_t=[Aug_t,T(:,pos)]; % 矩阵扩充
T(:,pos)=zeros(M,1); % 选中的列置零(实质上应该去掉,为了简单我把它置零)
aug_y=(Aug_t'*Aug_t)^(-1)*Aug_t'*s; % 最小二乘,使残差最小
r_n=s-Aug_t*aug_y; % 残差
pos_array(times)=pos; % 纪录最大投影系数的位置
end
hat_y(pos_array)=aug_y; % 重构的谱域向量
hat_x=real(Psi'*hat_y.'); % 做逆傅里叶变换重构得到时域信号
正交匹配追踪算法首先对采样矩阵利用傅立叶正交变换矩阵进行正交化,得到恢复矩阵T,这是体现正交的地方,然后利用恢复矩阵的每一列与采样得到的线性观测值进行内积,得到一列向量,然后找到这一向量中最大投