匹配追踪算法是正交匹配追踪算法的基础,下面是matlab代码
function [x_rec] = MatchingPursuit( y, K, Theta)
%% 匹配追踪算法
%% Vsesion:1.0 Written by zhenhuaLiu@ 2021.11.16 HIT ATCI
%% 输入参数:
%Theta:感知矩阵
%y: 压缩采样数据
%K: 稀疏度
%% 输出参数:
%x_rex: 重构的x向量
A = Theta;
[m, n] = size(Theta);
r = y;%初始化残差
x_rec = zeros(n, 1);%重构的稀疏向量初始化为0向量
A = Theta;
position = zeros(K, 1);%最大内积的索引值
max_inner = zeros(K, 1);%最大的内积值
for i = 1:K
% i = 2;
inner_product = r'*A;%计算残差与感知矩阵的内积;
[~, max_index] = max(abs(inner_product));% 找到内积的绝对值的最大值的下标
max_inner(i) = inner_product(max_index);%获得最大的内积值
r = r - max_inner(i)*A(:,max_index);
A(:, max_index) = zeros(m,1);%将支撑集索引对用的感知矩阵的该列全部置零
position(i) = max_index;
end
x_rec(position) = max_inner; %重构的稀疏向量除了索引值位置之外其他位置都为0