


GETCLSTRLENGTHS gets the length of each cluster.
GETCLSTRLENGTHS gets the length of each cluster. The length is defined as
the Euclidean distance between the end points.
angleVector: 1xN vector; angleVector lists the angles for the ranges
in rangeMatrix.
rangeMatrix: MxN array; Each row in rangeMatrix contains a laser scan
with ranges at the angles specified in angleVector.
clstrs: MxN array. clstrs should be the same size as rangeMatrix.
Each element in clstrs is an integer indicating the line cluster the
range to which reading belongs.
OUTPUTS:
lengths: MxK array where K is the largest cluster number. It
contains the lengths for each cluster.

0001 function lengths=getclstrlengths(angleVector,rangeMatrix,clstrs) 0002 % GETCLSTRLENGTHS gets the length of each cluster. 0003 % 0004 % GETCLSTRLENGTHS gets the length of each cluster. The length is defined as 0005 % the Euclidean distance between the end points. 0006 % 0007 % angleVector: 1xN vector; angleVector lists the angles for the ranges 0008 % in rangeMatrix. 0009 % 0010 % rangeMatrix: MxN array; Each row in rangeMatrix contains a laser scan 0011 % with ranges at the angles specified in angleVector. 0012 % 0013 % clstrs: MxN array. clstrs should be the same size as rangeMatrix. 0014 % Each element in clstrs is an integer indicating the line cluster the 0015 % range to which reading belongs. 0016 % 0017 % OUTPUTS: 0018 % lengths: MxK array where K is the largest cluster number. It 0019 % contains the lengths for each cluster. 0020 0021 noscans=size(rangeMatrix,1); 0022 0023 [x,y]=pol2cart(repmat(angleVector,[noscans,1]),rangeMatrix); 0024 0025 noclstrs=max(clstrs,[],2); 0026 maxnoclstrs=max(noclstrs); 0027 0028 lengths=zeros(noscans,maxnoclstrs); 0029 0030 for cntr1=1:noscans 0031 for cntr2=1:noclstrs(cntr1) 0032 ind=find(clstrs(cntr1,:)==cntr2); 0033 pt1=min(ind); 0034 pt2=max(ind); 0035 len=norm([x(cntr1,pt2)-x(cntr1,pt1),y(cntr1,pt2)-y(cntr1,pt1)]); 0036 lengths(cntr1,cntr2)=len; 0037 end 0038 end