24小时热门版块排行榜    

查看: 907  |  回复: 0

winter678

新虫 (初入文坛)

[交流] 有做过多假设目标跟踪(mht)的吗? 这个“剪枝”程序对应的是什么方法?

% Prune cuts less possible hypoes and corresponding state estimations 剪枝
% from cellHypo and cellTarg as well as take record of good estimations.
%
% Syntax:
%   [cellEstm, cellHypo, cellTarg] = ...
%       Prune(cellHypo, cellTarg, M, N, t, LP)
%
% In:
%   cellEstm - a cell array containing the state estimation for each
%       target. The structure of each cell is {idx, startTime, matX}.
%       The startTime is the time step on which the target is confirmed.一个包含状态估计为每个单元阵列
%的目标。每个单元的结构{ idx、开始时间、matX }。目标确认作为的时间作为开始时间。
%   cellHypo - a cell array of size 1*(1+M+M^2+...+M^N). The structure
%       of each cell in the cell array is {asso, prob}, where asso is a
%       column vector denoting the assignment of a set of measurements;
%       prob is a scalar denoting narual log of likelihood of this hypo. cellHypo -单元阵列的大小是1 *(1 + M + M ^ 2 +…+ M ^ N)结构
%   cellTarg - a cell array of the same size of cellHypo. Each cell in
%       the cell array is called oneCase which gives a set of estimations
%       for all targets according to the correspoding hypo in cellHypo.
%       The structure of each cell in oneCase is {idx, lifePoint, X, P}
%       describing one target.
%   M - number of hypoes generated for one seed hypo 一个干生成M个枝
%   N - scan depth%扫描深度
%   t - current time step. Note MHT introduces time delay, so at time
%       step t we can only confirm things happened at step t-N+1.
%   LP - the confirmed hypo may contains some tentative targets that are
%       not included in previous estimations (i.e. input cellEstm). If
%       the lifePoints of such targets are not less than LP, then they
%       are confirmed to be new targets.
%
% Out:
%   cellEstm - updated cellEstm
%   cellHypo - cellHypo after pruning
%   cellTarg - cellTarg after pruning  
  
function [cellEstm, cellHypo, cellTarg] = Prune...
    (cellEstm, cellHypo, cellTarg, M, N, t, LP)

% use the latest probabilities as the standard to judge%%???到54行 不懂啊
head = 2;
for i = 1 : N-1
    head = head + M^i;
end
rear = head + M^N - 1;
arrayProb = cellfun(@(v) v{2}, cellHypo(head : rear));%为cell数组的每个cell执行指定的函数 fun可以是特殊函数或者句柄
x = find(arrayProb == min(arrayProb)); % -log(prob), so find minimum
chooseBranch = ceil(x/M^(N-1));
idx = 1;
chooseIdx = [];
for i = 1 : N
    chooseIdx = [chooseIdx, ...
        idx+(chooseBranch-1)*M^(i-1)+1 : idx+chooseBranch*M^(i-1)];
    idx = idx + M^i;
end

% pick up the right branch
cellHypo = cellHypo(chooseIdx);
cellTarg = cellTarg(chooseIdx);

% update cellEstm
confirmedCase = cellTarg{1}; % the root of the hypo tree
for i = 1 : size(confirmedCase, 2)
    aTarg = confirmedCase{i};
    idx = aTarg{1};
    lifePoint = aTarg{2};
    X = aTarg{3};
    if lifePoint == 0
        continue;
    else
        flg = find(cellfun(@(v) v{1}, cellEstm) == idx);
        if isempty(flg) % maybe a new target appears
            if lifePoint >= LP
                newTarg = {idx, t-N+1, X};
                cellEstm = [cellEstm, newTarg];
            end
        else % an existed target
            thisTarg = cellEstm{flg};
            thisTarg{3} = [thisTarg{3}, X];
            cellEstm{flg} = thisTarg;
        end
    end
end

%%怎么实现的剪枝啊? 求交流
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : MHT最小demo程序matlab.zip
  • 2016-06-14 16:30:15, 72.3 K

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 winter678 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见