function distinguish(X)
t=strcat(num2str(d1(X)>0),num2str(d2(X)>0),num2str(d3(X)>0));
switch(t)
case '100'
disp(strcat('(',num2str(X(1)),',',num2str(X(2)),')','属于w1'));
case '010'
disp(strcat('(',num2str(X(1)),',',num2str(X(2)),')','属于w2'));
case '001'
disp(strcat('(',num2str(X(1)),',',num2str(X(2)),')','属于w3'));
case '110'
disp(strcat('(',num2str(X(1)),',',num2str(X(2)),')','属于w1或w2'));
case '101'
disp(strcat('(',num2str(X(1)),',',num2str(X(2)),')','属于w1或w3'));
case '011'
disp(strcat('(',num2str(X(1)),',',num2str(X(2)),')','属于w2或w3'));
otherwise
disp(strcat('(',num2str(X(1)),',',num2str(X(2)),')','不属于w1、w2、w3'));
end
end
function d1=d1(X) %判别式d1(x)=-2*x1+3*x2+4
d1=[-6,5]*X+6;
end
function d2=d2(X) %判别式d2(x)=2*x1+8*x2-4
d2=[6,5]*X-7;
end
function d3=d3(X) %判别式d3(x)=3*x1-x2+1
d3=[3,-1]*X+1;
end
function draw(XS) %XS为2n的输入矩阵
x1=-10:1:15;
x2=(2*x1-4)/3;
x3=(-2*x1+4)/8;
x4=3*x1+1;
plot(x1,x2);% 绘制函数d1(x)=-2*x1+3*x2+4
text(8,10,'d1(x)=-2*x1+3*x2+4');
text(14,14,'+');
text(14,12,'-');
hold on
plot(x1,x3);% 绘制函数d2(x)=2*x1+8*x2-4
text(8,-6,'d2(x)=2*x1+8*x2-4');
text(14,-9,'+');
text(14,-11,'-');
hold on
plot(x1,x4);% 绘制函数d3(x)=3*x1-x2+1
text(5,1,'d3(x)=3*x1-x2+1');
text(-8,0.5,'+');
text(-8,1.5,'-');
hold on
for i=1:length(XS)
xs=XS(:,i); %获取每个坐标点
x=xs(1);
y=xs(2);
txt=strcat('(',num2str(x),',',num2str(y),')'); %坐标点标注
plot(x,y,'r*'); %绘制坐标点
text(x+0.35,y-0.35,txt,'FontSize',8); %在坐标点附近标注坐标点
hold on
end
end