📄 kmeansga1.m
字号:
clc
close all
clear all
load('data\D4DWin13.mat');
data=Stodata;
zz=zeros(2,16);
data=standardize(data);
%**********************主函数*****************************************
%遗传算法主函数
maxgen=50; %遗传代数
N=100; %种群大小
lchrom=16*2; %染色体长度
pc=0.6; %交叉概率
pm=0.01; %变异概率
P0=Population(N,data) ; %初始种群
%**************************初始化种群***************************************
%遗传操作
for i=1:N
chrom1=P0(i,:);
% 依次计算每个染色体的适应度;
Fit0(i)=Fitness(chrom1,data,zz);
end
%*************************************************
for gen=1:maxgen
% 保存当前最优;
fitmax=max(Fit0) % 对应的适应度值fitmax=MAX(Fit)
s=find(Fit0==fitmax) % s=find(Fit==fitmax)
best0=P0(s,:) % 最优染色体best0=P0(s,:)
Ps=Selection(P0,Fit0); %选择操作×
Pc=Crossover(Ps,pc,data); %交叉操作
Pm=Mutation(Pc,pm); %变异操作
%*************************************************
P1=Pm;
% 计算进化后的种群的适应度:
for i=1:N
chrom1=P1(i,:);
% 依次计算每个染色体的适应度;
Fit1(i)=Fitness(chrom1,data,zz);
end
% 保存当前最优;
fitmax=max(Fit1) % 1 最优染色体best1
s=find(Fit1==fitmax) % 2 对应的适应度值fit1
best1=P0(s,:)
% 更新当前最优染色体;
bestc=max(best0,best1);
% 循环设置
P0=P1;
end
% 解码最优染色体bestc
for i=1:Nc % Nc 个聚类中心
for j=1:N % N 个数据样本
D(i,j)=sqrt(sum((abs(data(j,:)-center(i,:))).^2));
end
end% D=[2 3 7 9;2 8 4 7]
[A Label]=max(D);
%得到类别标号Label=[]
%C1=find(Label==1);
%C2=find(Label==2);
cid=Label';
img=reshape(cid,244,244);
for i=1:244
for j=1:244
if img(i,j)==1
img(i,j)=0;
else
img(i,j)=255;
end
end
end
figure,imshow(img);%完成图像分类
img1= imread ('MoS244true.bmp'); %读入标准测试图像
img1=im2double(img1);%转换成double型
for i=1:244
for j=1:244
if img1(i,j)==1
img1(i,j)=255;
else img1(i,j)=0;
end
end
end
img0=img-img1;
sum=0
for i=1:244
for j=1:244
if img0(i,j)==0
sum=sum+1; %统计像素差为零的总个数
end
end
end
sum
accuracy=sum/(244*244);%计算分类的精度
accuracy
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -