www.gusucode.com > 电路板故障检测源码程序 > 电路板故障检测源码程序/kdtree/kdtree/kd_plotbox.m

    function kd_plotbox(node_number,plot_str)

% by pramod vemulapalli 02/07/2010
% inspired by the code from Jan Nunnink, 2003
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% INPUTS
% none_number --- the node that needs to be plotted 
% plot_str    --- the type of plot that one would want 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

global tree_cell;


hold on;
if (strcmp(plot_str,'node'))
    % in this case just plot the location of the feature vector 
    plot(tree_cell(node_number).nodevector(1),tree_cell(node_number).nodevector(2),'ro')
else
    % in this case draw the cube enclosing the volume 
    a=tree_cell(node_number).hyperrect(1,:);
    b=tree_cell(node_number).hyperrect(2,:);
    c=[a(1) a(1) b(1) b(1);a(1) b(1) b(1) a(1)];
    d=[a(2) b(2) b(2) a(2);b(2) b(2) a(2) a(2)];
    if tree_cell(node_number).type =='leaf'
        line(c,d, 'color', 'k');
    else
        line(c,d, 'color', 'b');
        if(~isempty(tree_cell(node_number).splitval))
            if(tree_cell(node_number).splitdim==1)
                plot([tree_cell(node_number).splitval tree_cell(node_number).splitval],tree_cell(node_number).hyperrect(:,2),'r-')
            end
            if(tree_cell(node_number).splitdim==2)
                plot(tree_cell(node_number).hyperrect(:,1),[tree_cell(node_number).splitval tree_cell(node_number).splitval],'r-')
            end
        end
    end
end