تابع گروهبند بردار groupLable
دلیل اصلی نوشتن این تابع، این بود که گاهی وقتها لازم می شد که یک برداری از نظر تعداد تکرار عناصر،طول عناصر بدون تکرار و اندیس(موقعیت) تکرار عناصر مشخص بشه، که در متلب چنین تابعی نبود، اگر هم باشه من اطلاع ندارم، البته توابعی مثل intersect و ismember خروجی مشابهی دارند ولی این توابع موقع مقایسه دو بردار می تونند چنین خروجیهایی را بدهند.
function [groupN,grValue,grReap,grindexList]=groupLable(trainLable )
if size(trainLable,1)>1
trainLable=trainLable';
end
trainLable1=trainLable;
groupN=0;
while(~isempty(trainLable1))
groupN=groupN+1;
gr=(trainLable1==trainLable1(1));
groupCluster(groupN).reap=sum(gr);
groupCluster(groupN).grValue=trainLable1(1);
trainLable1=trainLable1(~gr);
end
grValue=([groupCluster.grValue]);
grReap=([groupCluster.reap]);
grindexList=[];
for grL=grValue
grindexList(end+1).grI= (grL==trainLable).*(1:length(trainLable));
grindexList(end).grI(grindexList(end).grI==0)= [];
end
end
نمونه خروجی و نحوه فراخوانی این تابع در تصویر زیر قابل مشاهده است:
