📄 lishuai.m
字号:
x1=[1,30,50,40,60,540,40,60;10,23,60,30,20,4,10,23];
x2=-[130,150,140,110,150;10,30,60,30,20];
x3=[22,21,40,60,540,34,55,6,54;-12,-10,-23,-60,-23,-57,-76,-76,-22];
w1=ones(1,3);w2=ones(1,3);w3=ones(1,3);
[r1,q1]=size(x1);[r2,q2]=size(x2);[r3,q3]=size(x3);
x=[x1,x2,x3;ones(1,q1+q2+q3)];
i=1;n=0;num=0;k=.1;
while i<q1+q2+q3+13,
d1=w1*x(:,i);
d2=w2*x(:,i);
d3=w3*x(:,i);
%switch i,
if (1<=i)&(i<=q1),
w=w1;
if d2>=d1,
w1=w+k*x(:,i)';
w2=w2-k*x(:,i)';
n=0;
end
if d3>=d1,
w1=w+k*x(:,i)';
w3=w3-k*x(:,i)';
n=0;
end
if (d2<d1)&(d3<d1)
n=n+1;
end
if n>q1+q2+q3
break
end
elseif ((q1+1)<=i)&(i<=(q1+q2)),
w=w2;
if d1>=d2
w2=w+k*x(:,i)';
w1=w1-k*x(:,i)';
n=0;
end
if d3>=d2
w2=w+k*x(:,i)';
w3=w3-k*x(:,i)';
n=0;
end
if (d2>d1)&(d3<d2)
n=n+1;
end
if n>q1+q2+q3
break;
end
elseif ((q1+q2+1)<=i)&(i<=(q1+q2+q3)),
w=w3;
if d1>=d3
w3=w+k*x(:,i)';
w1=w1-k*x(:,i)';
n=0;
end
if d2>=d3
w3=w+k*x(:,i)';
w2=w2-k*x(:,i)';
n=0;
end
if (d2<d3)&(d3>d1)
n=n+1;
end
if n>q1+q2+q3
break;
end
end
if i>=q1+q2+q3
i=1;
else i=i+1;%i,n,num
end
num=num+1;
if num>=9000
break
end
end
hold off,
plot(x(1,1:q1),x(2,1:q1),'o',x(1,q1+1:q1+q2),x(2,q1+1:q1+q2),...
'+',x(1,q1+q2+1:q1+q2+q3),x(2,q1+q2+1:q1+q2+q3),'*') %
p=minmax(x(1,:));%
pm=-(-w1(3)*w3(2)-w2(3)*w1(2)+...
w2(3)*w3(2)+w1(3)*w2(2)+w3(3)*w1(2)-w3(3)*w2(2))/...
(-w1(1)*w3(2)-w2(1)*w1(2)+w2(1)*w3(2)+w1(1)*w2(2)...
+w3(1)*w1(2)-w3(1)*w2(2));
xmin=p(1);
xmax=p(2);
xx=[xmin,pm,xmax];
yy1=(-(w1(3)-w2(3))-(w1(1)-w2(1))*xx)/(w1(2)-w2(2));
yy2=(-(w1(3)-w3(3))-(w1(1)-w3(1))*xx)/(w1(2)-w3(2));
yy3=(-(w3(3)-w2(3))-(w3(1)-w2(1))*xx)/(w3(2)-w2(2));
xy1=[xmin;yy1(1);1];
xy2=[xmin;yy2(1);1];
xy3=[xmin;yy3(1);1];
d11=w1*xy1;
d12=w2*xy1;
d13=w3*xy1;
d21=w1*xy2;
d22=w2*xy2;
d23=w3*xy2;
d31=w1*xy3;
d32=w2*xy3;
d33=w3*xy3;
if n>=q1+q2+q3
if(d13>d12)&(d13>d11)
hold on,plot(xx(1,2:3),yy1(1,2:3),'r');
else
hold on,plot(xx(1,1:2),yy1(1,1:2),'r');
end
if(d22>d21)&(d22>d23)
hold on,plot(xx(1,2:3),yy2(1,2:3),'g');
else
hold on,plot(xx(1,1:2),yy2(1,1:2),'g');
end
if(d31>d32)&(d31>d33)
hold on,plot(xx(1,2:3),yy3(1,2:3),'b');
else
hold on,plot(xx(1,1:2),yy3(1,1:2),'b');
end
title('判决面如下')
else %输出训练次数达到阈值
hold on,title('训练次数达到阈值')
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -