📄 genbbt.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head> <title>Description of genBBT</title> <meta name="keywords" content="genBBT"> <meta name="description" content="GENBBT Generate BBT (Branch and Bound Tree) for nearest neighbor search"> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <meta name="generator" content="m2html © 2003 Guillaume Flandin"> <meta name="robots" content="index, follow"> <link type="text/css" rel="stylesheet" href="../m2html.css"></head><body><a name="_top"></a><div><a href="../index.html">Home</a> > <a href="index.html">dcpr</a> > genBBT.m</div><!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png"> Master index</a></td><td align="right"><a href="index.html">Index for dcpr <img alt=">" border="0" src="../right.png"></a></td></tr></table>--><h1>genBBT</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>GENBBT Generate BBT (Branch and Bound Tree) for nearest neighbor search</strong></div><h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>function NODE = genbbt(data, clusterNum, levelNum); </strong></div><h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre class="comment"> GENBBT Generate BBT (Branch and Bound Tree) for nearest neighbor search
Usage: NODE = genbbt(data, clusterNum, levelNum)
data: Data matrix with each row a data vector
clusterNum: No. of clusters (or children) for each node
levelNum: No. of level of the BB tree
NODE: A vector representing the BB tree
Field of NODE:
NODE(i).mean: mean vector of a tree node
NODE(i).radius: radius vector of a tree node
NODE(i).child: indices of children for a non-terminal node
NODE(i).data: indices of data for a terminal node
NODE(i).dist2mean: distance to mean of a terminal node</pre></div><!-- crossreference --><h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>This function calls:<ul style="list-style-image:url(../matlabicon.gif)"><li><a href="vqKmeans.html" class="code" title="function [center, U, distortion, allCenter] = vqKmeans(data, clusterNum, plotOpt)">vqKmeans</a> vqKmeans: Vector quantization using K-means clustering (Forgy's batch-mode method)</li></ul>This function is called by:<ul style="list-style-image:url(../matlabicon.gif)"></ul><!-- crossreference --><h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><ul style="list-style-image:url(../matlabicon.gif)"><li><a href="#_sub1" class="code">function maketree(data, index, clusterNum, parent, level)</a></li></ul><h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function NODE = genbbt(data, clusterNum, levelNum);</a>0002 <span class="comment">% GENBBT Generate BBT (Branch and Bound Tree) for nearest neighbor search</span>0003 <span class="comment">% Usage: NODE = genbbt(data, clusterNum, levelNum)</span>0004 <span class="comment">% data: Data matrix with each row a data vector</span>0005 <span class="comment">% clusterNum: No. of clusters (or children) for each node</span>0006 <span class="comment">% levelNum: No. of level of the BB tree</span>0007 <span class="comment">% NODE: A vector representing the BB tree</span>0008 <span class="comment">%</span>0009 <span class="comment">% Field of NODE:</span>0010 <span class="comment">% NODE(i).mean: mean vector of a tree node</span>0011 <span class="comment">% NODE(i).radius: radius vector of a tree node</span>0012 <span class="comment">% NODE(i).child: indices of children for a non-terminal node</span>0013 <span class="comment">% NODE(i).data: indices of data for a terminal node</span>0014 <span class="comment">% NODE(i).dist2mean: distance to mean of a terminal node</span>0015 0016 <span class="keyword">global</span> NODENUM NODE0017 <span class="keyword">if</span> nargin<3, levelNum = 4; <span class="keyword">end</span>0018 <span class="keyword">if</span> nargin<2, clusterNum = 3; <span class="keyword">end</span>0019 <span class="keyword">if</span> nargin<1, data = rand(1000,2); <span class="keyword">end</span>0020 0021 dataNum = size(data, 1);0022 dimNum = size(data, 2);0023 <span class="keyword">if</span> dimNum==2,0024 plot(data(:,1), data(:,2), <span class="string">'.'</span>);0025 <span class="keyword">end</span>0026 NODENUM = 0;0027 <a href="#_sub1" class="code" title="subfunction maketree(data, index, clusterNum, parent, level)">maketree</a>(data, 1:dataNum, clusterNum, NODENUM, levelNum);0028 <span class="keyword">if</span> dimNum==2, axis equal; <span class="keyword">end</span>0029 0030 <span class="comment">% ====== Sub function</span>0031 <a name="_sub1" href="#_subfunctions" class="code">function maketree(data, index, clusterNum, parent, level)</a>0032 <span class="keyword">global</span> NODENUM NODE0033 NODENUM = NODENUM+1;0034 <span class="keyword">if</span> parent~=00035 NODE(parent).child = [NODE(parent).child NODENUM]; 0036 <span class="keyword">end</span>0037 NODE(NODENUM).mean = mean(data);0038 dist2mean = zeros(size(data,1),1);0039 <span class="keyword">for</span> i=1:size(data,1),0040 dist2mean(i) = norm(data(i,:)-NODE(NODENUM).mean);0041 <span class="keyword">end</span>0042 NODE(NODENUM).radius = max(dist2mean);0043 NODE(NODENUM).child = [];0044 0045 <span class="keyword">if</span> size(data,2)==2,0046 x=data(:,1);0047 y=data(:,2);0048 k=convhull(x,y);0049 color = {<span class="string">'y'</span>, <span class="string">'k'</span>, <span class="string">'m'</span>, <span class="string">'g'</span>, <span class="string">'r'</span>, <span class="string">'c'</span>};0050 line(x(k), y(k), <span class="string">'linestyle'</span>, <span class="string">'-'</span>, <span class="string">'marker'</span>, <span class="string">'o'</span>, <span class="keyword">...</span>0051 <span class="string">'color'</span>, color{rem(level, length(color))+1}, <span class="keyword">...</span>0052 <span class="string">'linewidth'</span>, level);0053 <span class="keyword">end</span>0054 0055 <span class="keyword">if</span> level==1 | size(data,1)==1 <span class="comment">% Terminal node</span>0056 NODE(NODENUM).data = index;0057 <span class="comment">% NODE(NODENUM).dist2mean is the distance of each data to mean</span>0058 NODE(NODENUM).dist2mean = dist2mean;0059 <span class="keyword">return</span>;0060 <span class="keyword">end</span>0061 0062 [center, U, objFcn] = <a href="vqKmeans.html" class="code" title="function [center, U, distortion, allCenter] = vqKmeans(data, clusterNum, plotOpt)">vqKmeans</a>(data', clusterNum, 0); center=center'; 0063 parent = NODENUM;0064 <span class="keyword">for</span> i = 1:clusterNum,0065 index0 = find(U(i, :) == 1);0066 index1 = index(index0);0067 data1 = data(index0, :);0068 <a href="#_sub1" class="code" title="subfunction maketree(data, index, clusterNum, parent, level)">maketree</a>(data1, index1, clusterNum, parent, level-1);0069 <span class="keyword">end</span></pre></div><hr><address>Generated on Thu 30-Oct-2008 12:53:56 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> © 2003</address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -