group.m

来自「运用遗传算法进行聚类分析」· M 代码 · 共 23 行

M
23
字号
function x=group(filename,chrom,len,fcode);  % 给出染色体对应的分组情况;filename为基金性质文件(xls),len为每个性质用多少位代码表示,返回基金分类号
                                             % fcode为染色体编码类型
a=xlsread(filename);  % 读入
[n q]=size(a);  % n为基金数;q为性质数
[cx cy]=size(chrom);   % cx为染色体数,cy为染色体长度
g=cy/q/len;   % g为分类数
xtemp=zeros(g,n,cx);  % 3维临时矩阵
for s=1:cx
madoidtemp=reshape(chrom(s,:),q*len,g);  % 分解染色体为q*len×g的矩阵
madoid=bs2rv(madoidtemp',[repmat(len,1,q);min(a);max(a);repmat(fcode,1,q);repmat(0,1,q);repmat(1,2,q)]);% 把染色体转换为实值属性值
t=zeros(1,n);  % 每个基金属于哪一类的标号
for i=1:n   % 识别
   [temp t(i)]=min(sum((repmat(a(i,:),g,1)-madoid).^2,2));
end

for i=1:g
    j=find(t==i);  % 找出属于第i类的基金
    if j
    xtemp(i,1:length(j),s)=j; 
    end
end
x=xtemp;
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?