資源簡介
多路徑匹配追蹤 廣度優(yōu)先(MMP_BF),該方式搜索最優(yōu)原子支撐集的方式和OMP類有些許不同,程序中采用結(jié)構(gòu)體來保存每個節(jié)點的各項信息,對理解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? 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
評論
共有 條評論