جمعه, ۱ آذر ۱۳۹۸، ۰۱:۱۸ ب.ظ
تابع گروهبند بردار 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
نمونه خروجی و نحوه فراخوانی این تابع در تصویر زیر قابل مشاهده است:
۹۸/۰۹/۰۱