资源简介

多路径匹配追踪 广度优先(MMP_BF),该方式搜索最优原子支撑集的方式和OMP类有些许不同,程序中采用结构体来保存每个节点的各项信息,对理解MMP_BF有很大帮助

资源截图

代码片段和文件信息

%⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙
% Estimate the sparse signal x using pruned MMP
%
% y : observation
% Phi : Sensing matrix
% K : Sparsity
% L : The size of expanding tree
% cand_len : The pruning size of candidate dictionareis
%
% Output parameters
% x_mmp_s : estimated signal
% x_supp : selected support vector indice.
% idx_depth : iteration count during estimating
%
% Written by Suhyuk Kwon
% Information System Lab. Korea Univ.
%⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙⒙
function [x_mmp_s x_supp idx_depth] = islsp_EstMMP_BF_reuse(y Phi K L N_max)

[nRows nCols] = size(Phi);

idx_depth = 0;

%% Define the hash function for performance issues.
my_hash_f = @sum;

s_path_info = struct( ‘supps‘ zeros(K1)...
‘residu‘ zeros(nRows 1)...
‘x_hat‘ zeros(nCols 1)...
‘prev_inv‘ zeros(1 1)...
‘res_norm‘ zeros(1 1)...
‘suppHash‘ int32(0));

nodes_parents = s_path_info(:ones(L 1));
 
%% Initialize the best path.
[supp_mag supp_idx] = sort(abs(Phi‘*y) ‘descend‘);
for idx=1:L
supps = supp_idx(idx);

x_hat = pinv(Phi(:supps))*y;
residu = y-x_hat*Phi(:supps);

nodes_parents(idx).supps = supps;
nodes_parents(idx).residu = residu;
nodes_parents(idx).x_hat = x_hat;
nodes_parents(idx).prev_inv = 1/(norm(Phi(:supps))^2);
nodes_parents(idx).res_norm = norm(residu);
nodes_parents(idx).suppHash = my_hash_f(supps);
end

%% General iteration
idx_abs_child = L;

while (idx_depth < K-1)
idx_depth = idx_depth+1;

search_len = min(idx_abs_child N_max);

%nodes_children(search_len*L) = s_path_info;
nodes_children = s_path_info(:ones(search_len*L 1));

idx_abs_child = 0;
for idx_best=1:search_len
[supp_mag supp_idx] = sort(abs(Phi‘*nodes_parents(idx_best).residu) ‘descend‘);

% Generate the child nodes
for idx_child=1:L
% supps = union(best_path_par(idx_best).supps supp_idx(idx_child));

% check exist

评论

共有 条评论