資源簡介
一個用Matlab實現的模糊聚類算法,原始數據存放于F盤跟目錄下,也可自己設置。里面的注釋也還可以,應該都能看懂,如果有一些模糊聚類算法基礎的話。
代碼片段和文件信息
%%%%%%%%%%%%%%%模糊聚類%%%%%%%%%%%%%%%%%%%%%%%
clear;
load?F:\data.txt;
INPUTDATA=data;
%--------原始數據標準化-------%
disp(‘請選擇原始數據標準化方式:?‘);
disp(‘<1-總和標準化|2-標準差標準化|3-極大值標準化|4-極差標準化>‘);
wayforstand=input(‘請輸入:?‘);
switch?wayforstand
????case?1
????????DATAFORCLUS=standard_use_sum(INPUTDATA);
????case?2
????????DATAFORCLUS=standard_use_std(INPUTDATA);
????case?3
????????DATAFORCLUS=standard_use_max(INPUTDATA);
????case?4
????????DATAFORCLUS=standard_use_jc(INPUTDATA);
????otherwise
????????error(‘您的輸入不符合要求->執行結束!!!‘);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%基于模糊等價關系的模糊聚類%%%%%%%%%%%%%%%%%%%%%%
%----------構造相似關系-----------%
numrows=size(DATAFORCLUS1);
numcols=size(DATAFORCLUS2);
disp(‘請選擇對象之間相似性統計量的方式:?‘);
disp(‘<1-相關系數法|2-夾角余弦法|3-指數相似系數法|4-絕對值指數法|5-算術平均最小法|6-最大最小值法|7-絕對值差數法|8-數量積法>‘);
wayforr_ij=input(‘請輸入:?‘);
switch?wayforr_ij
????case?1?%-----------------------------------相關系數法
????????for?i=1:numrows
????????????for?j=1:numrows
????????????????meani=mean(DATAFORCLUS(i:));meanj=mean(DATAFORCLUS(j:));???????????
????????????????simiR(ij)=sum((DATAFORCLUS(i:)-meani).*(DATAFORCLUS(j:)-meanj))/...
????????????????(sqrt(sum((DATAFORCLUS(i:)-meani).^2))*sqrt(sum((DATAFORCLUS(j:)-meanj).^2)));???
????????????end
????????end
????case?2?%-----------------------------------夾角余弦法
????????for?i=1:numrows
????????????for?j=1:numrows
????????????????simiR(ij)=sum(DATAFORCLUS(i:).*DATAFORCLUS(j:))/...
????????????????(sqrt(sum(DATAFORCLUS(i:).*DATAFORCLUS(i:)))*sqrt(sum(DATAFORCLUS(j:).*DATAFORCLUS(j:))));
????????????end
????????end
????case?3?%-----------------------------------指數相似系數法
????case?4?%-----------------------------------絕對值指數法
????case?5?%-----------------------------------算術平均最小法
??????
????case?6?%-----------------------------------最大最小值法
???
????case?7?%-----------------------------------絕對值差數法
?????
????case?8?%-----------------------------------數量積法
????otherwise
?????????error(‘您的輸入不符合要求->執行結束!!!‘);
end
%-------改造成等價關系----------%
sign=0;
numselfmul=1;
simiRk=eye(numrows);
equi_tem=simiR;
while?sign==0
????for?i=1:numrows
????????for?j=1:numrows
????????????for?c=1:numrows
????????????rij_temp(c)=min([equi_tem(
- 上一篇:帶通濾波器matlab程序
- 下一篇:BPSKQPSK數字信號的調制仿真
評論
共有 條評論