📄 classcover1103hybrid.m
字号:
function f=classcover()
%读味觉信号数据
[fid1,message]=fopen('2wdata.dat','r');
[A,count]=fscanf(fid1,'%f %f %i',[3,inf]);
fclose(fid1);
[fid2,message]=fopen('statistic.dat','w');
[fid3,message]=fopen('fuzzyruledata.dat','w');
NumofClass1=100;
NumofOtherClass=1000;
NumofTotalClass=1100;
%转换数据的矩阵次序
TempA=A;
for sequence=1:1:11
A=[];
A=TempA;
switch sequence
case 1
A=TempA;
case 2
for i=1:1:NumofClass1
A(1,i)=TempA(1,i+100);
A(2,i)=TempA(2,i+100);
A(3,i)=TempA(3,i+100);
A(1,i+100)=TempA(1,i);
A(2,i+100)=TempA(2,i);
A(3,i+100)=TempA(3,i);
end
case 3
for i=1:1:NumofClass1
A(1,i)=TempA(1,i+200);
A(2,i)=TempA(2,i+200);
A(3,i)=TempA(3,i+200);
A(1,i+200)=TempA(1,i);
A(2,i+200)=TempA(2,i);
A(3,i+200)=TempA(3,i);
end
case 4
for i=1:1:NumofClass1
A(1,i)=TempA(1,i+300);
A(2,i)=TempA(2,i+300);
A(3,i)=TempA(3,i+300);
A(1,i+300)=TempA(1,i);
A(2,i+300)=TempA(2,i);
A(3,i+300)=TempA(3,i);
end
case 5
for i=1:1:NumofClass1
A(1,i)=TempA(1,i+400);
A(2,i)=TempA(2,i+400);
A(3,i)=TempA(3,i+400);
A(1,i+400)=TempA(1,i);
A(2,i+400)=TempA(2,i);
A(3,i+400)=TempA(3,i);
end
case 6
for i=1:1:NumofClass1
A(1,i)=TempA(1,i+500);
A(2,i)=TempA(2,i+500);
A(3,i)=TempA(3,i+500);
A(1,i+500)=TempA(1,i);
A(2,i+500)=TempA(2,i);
A(3,i+500)=TempA(3,i);
end
case 7
for i=1:1:NumofClass1
A(1,i)=TempA(1,i+600);
A(2,i)=TempA(2,i+600);
A(3,i)=TempA(3,i+600);
A(1,i+600)=TempA(1,i);
A(2,i+600)=TempA(2,i);
A(3,i+600)=TempA(3,i);
end
case 8
for i=1:1:NumofClass1
A(1,i)=TempA(1,i+700);
A(2,i)=TempA(2,i+700);
A(3,i)=TempA(3,i+700);
A(1,i+700)=TempA(1,i);
A(2,i+700)=TempA(2,i);
A(3,i+700)=TempA(3,i);
end
case 9
for i=1:1:NumofClass1
A(1,i)=TempA(1,i+800);
A(2,i)=TempA(2,i+800);
A(3,i)=TempA(3,i+800);
A(1,i+800)=TempA(1,i);
A(2,i+800)=TempA(2,i);
A(3,i+800)=TempA(3,i);
end
case 10
for i=1:1:NumofClass1
A(1,i)=TempA(1,i+900);
A(2,i)=TempA(2,i+900);
A(3,i)=TempA(3,i+900);
A(1,i+900)=TempA(1,i);
A(2,i+900)=TempA(2,i);
A(3,i+900)=TempA(3,i);
end
case 11
for i=1:1:NumofClass1
A(1,i)=TempA(1,i+1000);
A(2,i)=TempA(2,i+1000);
A(3,i)=TempA(3,i+1000);
A(1,i+1000)=TempA(1,i);
A(2,i+1000)=TempA(2,i);
A(3,i+1000)=TempA(3,i);
end
end
%建立各数据点的半径信息
MaxRadius=0;% rep. maxradius
if sequence==1
RateC=4;%参数beta
end
if sequence==2
RateC=3;%参数beta
end
if sequence==3
RateC=4;%参数beta
end
if sequence==4
RateC=3;%参数beta
end
if sequence==5
RateC=4;%参数beta
end
if sequence==6
RateC=3;%参数beta
end
if sequence==7
RateC=4;%参数beta
end
if sequence==8
RateC=3;%参数beta
end
if sequence==9
RateC=4;%参数beta
end
if sequence==10
RateC=3;%参数beta
end
if sequence==11
RateC=4;%参数beta
end
for i=1:1:NumofClass1
radius=2;
radius1=2;
radius2=2;
radius3=2;
radius4=2;
radius5=2;
ax=A(1,i);
ay=A(2,i);
aclass=A(3,i);
for j=(NumofClass1+1):1:NumofTotalClass
bx=A(1,j);
by=A(2,j);
bclass=A(3,j);
tempradius=sqrt((ax-bx)^2+(ay-by)^2);
if tempradius<radius
radius5=radius4;
radius4=radius3;
radius3=radius2;
radius2=radius1;
radius1=radius;
radius=tempradius;
end
end
if RateC==0
A(4,i)=radius;
end
if (RateC==1)&(radius1<2)
A(4,i)=radius1;
else
A(4,i)=radius;
end
if (RateC==2)&(radius2<2)
A(4,i)=radius2;
elseif (RateC==2)&(radius1<2)
A(4,i)=radius1;
else
A(4,i)=radius;
end
if (RateC==3)&(radius3<2)
A(4,i)=radius3;
elseif (RateC==3)&(radius2<2)
A(4,i)=radius2;
elseif (RateC==3)&(radius1<2)
A(4,i)=radius1;
else
A(4,i)=radius;
end
if (RateC==4)&(radius4<2)
A(4,i)=radius4
elseif (RateC==4)&(radius3<2)
A(4,i)=radius3;
elseif (RateC==4)&(radius2<2)
A(4,i)=radius2;
elseif (RateC==4)&(radius1<2)
A(4,i)=radius1;
else
A(4,i)=radius;
end
if (RateC==5)&(radius5<2)
A(4,i)=radius5;
elseif (RateC==5)&(radius4<2)
A(4,i)=radius4;
elseif (RateC==5)&(radius3<2)
A(4,i)=radius3;
elseif (RateC==5)&(radius2<2)
A(4,i)=radius2;
elseif (RateC==5)&(radius1<2)
A(4,i)=radius1;
else
A(4,i)=radius;
end
if MaxRadius<A(4,i)
MaxRadius=A(4,i);
end
end
%用改进的贪心算法找最大覆盖点
if sequence==1
RateA=0.045;
RateB=0.5;
end
if sequence==2
RateA=0.04;
RateB=0.6;
end
if sequence==3
RateA=0.045;
RateB=0.4;
end
if sequence==4
RateA=0.05;
RateB=0.7;
end
if sequence==5
RateA=0.03;
RateB=0.5;
end
if sequence==6
RateA=0.045;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -