📄 distinguish1.m
字号:
function distinguish1()
w=[0 0 1
0 1 1
-1 0 -1
-1 -1 -1];
a(1,:)=[1 1 1];
a_result=modify(a(1,:),w) % 调用modify函数
switch a_result(2) %判断分界线是否垂直于x1,并画图
case 0
x=(-1)/(a_result(1));
y=-1:0.001:2;
plot(0,0,'*',0,1,'*',1,0,'+',1,1,'+',x,y,'r-');
xlabel('X1');
ylabel('X2');
axis([-1,2,-1,2]);
otherwise
x=-1:0.001:2;
y=(-1)*(a_result(1)*x+a_result(3))/a_result(2);
plot(0,0,'*',0,1,'*',1,0,'+',1,1,'+',x,y,'r-');
xlabel('X1');
ylabel('X2');
axis([-1,2,-1,2]);
end
function m=modify(a_former,w_value)
u=1; %初始化u,nv,v值
nv=1;
v=[0 0 0 0];
while u|v(1)|v(2)|v(3)|v(4) %进入循环
if u==1 %计算a(2)=a(1)+y1
a((nv+1),:)=a_former+w_value(mod(nv,4),:);
u=0;
end
if mod(nv,4)~=0 %判断a(nv)*yi的值(i=1,2,3)
if a(nv,:)*w_value(mod(nv,4),:)'<=0
a(nv+1,:)=a(nv,:)+w_value(mod(nv,4),:);
elseif a(nv,:)*w_value(mod(nv,4),:)'>0
a(nv+1,:)=a(nv,:);
end
end
if mod(nv,4)==0 %%判断a(nv)*y4的值
if a(nv,:)*w_value(4,:)'<=0
a(nv+1,:)=a(nv,:)+w_value(4,:);
elseif a(nv,:)*w_value(4,:)'>0
a(nv+1,:)=a(nv,:);
end
end
nv=nv+1; %nv自加1,准备进入下一循环
for j=1:4
if (a(nv,:)*w_value(j,:)')<=0 %循环条件判断修正
v(j)=1;
else
v(j)=0;
end
end
end
m=a(nv,:); %返回最终a值
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -