資源簡介
么anshift聚類算法的matlab實現,以及2維演示程序。很好很強大的代碼學習資料!

代碼片段和文件信息
function?[clustCentdata2clustercluster2dataCell]?=?MeanShiftCluster(dataPtsbandWidthplotFlag);
%perform?MeanShift?Clustering?of?data?using?a?flat?kernel
%
%?---INPUT---
%?dataPts???????????-?input?data?(numDim?x?numPts)
%?bandWidth?????????-?is?bandwidth?parameter?(scalar)
%?plotFlag??????????-?display?output?if?2?or?3?D????(logical)
%?---OUTPUT---
%?clustCent?????????-?is?locations?of?cluster?centers?(numDim?x?numClust)
%?data2cluster??????-?for?every?data?point?which?cluster?it?belongs?to?(numPts)
%?cluster2dataCell??-?for?every?cluster?which?points?are?in?it?(numClust)
%?
%?Bryan?Feldman?02/24/06
%?MeanShift?first?appears?in
%?K.?Funkunaga?and?L.D.?Hosteler?“The?Estimation?of?the?Gradient?of?a
%?Density?Function?with?Applications?in?Pattern?Recognition“
%***?Check?input?****
if?nargin?2
????error(‘no?bandwidth?specified‘)
end
if?nargin?3
????plotFlag?=?true;
????plotFlag?=?false;
end
%****?Initialize?stuff?***
[numDimnumPts]?=?size(dataPts);
numClust????????=?0;
bandSq??????????=?bandWidth^2;
initPtInds??????=?1:numPts;
maxPos??????????=?max(dataPts[]2);??????????????????????????%biggest?size?in?each?dimension
minPos??????????=?min(dataPts[]2);??????????????????????????%smallest?size?in?each?dimension
boundBox????????=?maxPos-minPos;????????????????????????%bounding?box?size
sizeSpace???????=?norm(boundBox);???????????????????????%indicator?of?size?of?data?space
stopThresh??????=?1e-3*bandWidth;???????????????????????%when?mean?has?converged
clustCent???????=?[];???????????????????????????????????%center?of?clust
beenVisitedFlag?=?zeros(1numPts‘uint8‘);??????????????%track?if?a?points?been?seen?already
numInitPts??????=?numPts;???????????????????????????????%number?of?points?to?posibaly?use?as?initilization?points
clusterVotes????=?zeros(1numPts‘uint16‘);?????????????%used?to?resolve?conflicts?on?cluster?membership
while?numInitPts
????tempInd?????????=?ceil(?(numInitPts-1e-6)*rand);????????%pick?a?random?seed?point
????stInd???????????=?initPtInds(tempInd);??????????????????%use?this?point?as?start?of?mean
????myMean??????????=?dataPts(:stInd);???????????????????????????%?intilize?mean?to?this?points?location
????myMembers???????=?[];???????????????????????????????????%?points?that?will?get?added?to?this?cluster??????????????????????????
????thisClusterVotes????=?zeros(1numPts‘uint16‘);?????????%used?to?resolve?conflicts?on?cluster?membership
????while?1?????%loop?untill?convergence
????????
????????sqDistToAll?=?sum((repmat(myMean1numPts)?-?dataPts).^2);????%dist?squared?from?mean?to?all?points?still?active
????????inInds??????=?find(sqDistToAll?????????thisClusterVotes(inInds)?=?thisClusterVotes(inInds)+1;??%add?a?vote?for?all?the?in?points?belonging?to?this?cluster
????????
????????
????????myOldMean???=?myMean;???????????????????????????????????%save?the?old?mean
????????myMean??????=?mean(dataPts(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????5815??2006-02-26?16:59??MeanShiftCluster.m
?????文件?????????996??2006-02-26?16:53??testMeanShift.m
- 上一篇:利用matlab對瑞利衰落信道仿真
- 下一篇:matlab預處理共軛梯度法
評論
共有 條評論