clc ;
clear all
x1 = [1,2,4,1,5];
y1 = [2,1,-1,-3,-3];
xx1 = [x1;y1];
x2 = [-2.5,-2.5,-1.5,-4,-5,-3];
y2 = [1,-1,5,1,-4,0];
xx2 = [x2;y2];
xx_test = [0,1,-1,-1,0.5,-3,2,0,1,-0.5,0.5];
yy_test = [-3,3,5,1,6,-1,-1,1,1,-0.5,-0.5];
x_test = xx_test(:);
y_test = yy_test(:);
e_1=1; %送代歩长
e_2=2; %送代歩长
e_3=3; %送代歩长
a_1=double([0,0,0])'; %
a_2=double([0,0,5])'; %
a_3=double([2,2,-1])'; %增广权向量初始化(列)
[aa_11,k_11]=perceptron(xx1,xx2,a_1,e_1);
[aa_12,k_12]=perceptron(xx1,xx2,a_1,e_2);
[aa_13,k_13]=perceptron(xx1,xx2,a_1,e_3);
[aa_21,k_21]=perceptron(xx1,xx2,a_2,e_1);
[aa_22,k_22]=perceptron(xx1,xx2,a_2,e_2);
[aa_23,k_23]=perceptron(xx1,xx2,a_2,e_3);
[aa_31,k_31]=perceptron(xx1,xx2,a_3,e_1);
[aa_32,k_32]=perceptron(xx1,xx2,a_3,e_2);
[aa_33,k_33]=perceptron(xx1,xx2,a_3,e_3);
k = [k_11 k_12 k_13;k_21 k_22 k_23; k_31 k_32 k_33];
aa = [aa_11,aa_12,aa_13,aa_21,aa_22,aa_23,aa_31,aa_32,aa_33];
x_test11 = (-aa_11(1)-y_test*aa_11(3))/aa_11(2);
x_test12 = (-aa_12(1)-y_test*aa_12(3))/aa_12(2);
x_test13 = (-aa_13(1)-y_test*aa_13(3))/aa_13(2);
x_test21 = (-aa_21(1)-y_test*aa_21(3))/aa_21(2);
x_test22 = (-aa_22(1)-y_test*aa_22(3))/aa_22(2);
x_test23 = (-aa_23(1)-y_test*aa_23(3))/aa_23(2);
x_test31 = (-aa_31(1)-y_test*aa_31(3))/aa_31(2);
x_test32 = (-aa_32(1)-y_test*aa_32(3))/aa_32(2);
x_test33 = (-aa_33(1)-y_test*aa_33(3))/aa_33(2);
classleft_11 = find(x_test <= x_test11);
classright_11 = find(x_test > x_test11);
result11(classleft_11)=-1; %二类
result11(classright_11)=1; %一类
result11 = [xx_test;yy_test;result11];
classleft_12 = find(x_test <= x_test12);
classright_12 = find(x_test > x_test12);
result12(classleft_12)=-1; %二类
result12(classright_12)=1; %一类
result12 = [xx_test;yy_test;result12];
classleft_13 = find(x_test <= x_test13);
classright_13 = find(x_test > x_test13);
result13(classleft_13)=-1; %二类
result13(classright_13)=1; %一类
result13 = [xx_test;yy_test;result13];
classleft_21 = find(x_test <= x_test21);
classright_21 = find(x_test > x_test21);
result21(classleft_21)=-1; %二类
result21(classright_21)=1; %一类
result21 = [xx_test;yy_test;result21];
classleft_22 = find(x_test <= x_test22);
classright_22 = find(x_test > x_test22);
result22(classleft_22)=-1; %二类
result22(classright_22)=1; %一类
result22 = [xx_test;yy_test;result22];
classleft_23 = find(x_test <= x_test23);
classright_23 = find(x_test > x_test23);
result23(classleft_23)=-1; %二类
result23(classright_23)=1; %一类
result23 = [xx_test;yy_test;result23];
classleft_33 = find(x_test <= x_test33);
classright_33 = find(x_test > x_test33);
result33(classleft_33)=-1; %二类
result33(classright_33)=1; %一类
result33 = [xx_test;yy_test;result33];
classleft_32 = find(x_test <= x_test32);
classright_32 = find(x_test > x_test32);
result32(classleft_32)=-1; %二类
result32(classright_32)=1; %一类
result32 = [xx_test;yy_test;result32];
classleft_31 = find(x_test <= x_test31);
classright_31 = find(x_test > x_test31);
result31(classleft_31)=-1; %二类
result31(classright_31)=1; %一类
result31 = [xx_test;yy_test;result31];
figure(1);
subplot(3,3,1);
scatter(xx1(1,:),xx1(2,:),'r', 'o');
hold on;
scatter(xx2(1,:),xx2(2,:), 'g','*');
hold on;
scatter(x_test(classleft_11),y_test(classleft_11),'b', '*');
hold on;
scatter(x_test(classright_11),y_test(classright_11),'b', 'o');
axis([-6,6,-6,6]);
line([(-aa_11(1)+6*aa_11(3))/aa_11(2),(-aa_11(1)-6*aa_11(3))/aa_11(2)],[-6,6],'Color','b');
grid on;
title('e=1;a=[0,0,0]的分类结果');
subplot(3,3,2);
scatter(xx1(1,:),xx1(2,:),'r', 'o');
hold on;
scatter(xx2(1,:),xx2(2,:), 'g','*');
hold on;
scatter(x_test(classleft_12),y_test(classleft_12),'b', '*');
hold on;
scatter(x_test(classright_12),y_test(classright_12),'b', 'o');
axis([-6,6,-6,6]);
line([(-aa_12(1)+6*aa_12(3))/aa_12(2),(-aa_12(1)-6*aa_12(3))/aa_12(2)],[-6,6],'Color','b');
grid on;
title('e=2;a=[0,0,0]的分类结果');
subplot(3,3,3);
scatter(xx1(1,:),xx1(2,:),'r', 'o');
hold on;
scatter(xx2(1,:),xx2(2,:), 'g','*');
hold on;
scatter(x_test(classleft_13),y_test(classleft_13),'b', '*');
hold on;
scatter(x_test(classright_13),y_test(classright_13),'b', 'o');
axis([-6,6,-6,6]);
line([(-aa_13(1)+6*aa_13(3))/aa_13(2),(-aa_13(1)-6*aa_13(3))/aa_13(2)],[-6,6],'Color','b');
grid on;
title('e=3;a=[0,0,0]的分类结果');
subplot(3,3,4);
scatter(xx1(1,:),xx1(2,:),'r', 'o');
hold on;
scatter(xx2(1,:),xx2(2,:), 'g','*');
hold on;
scatter(x_test(classleft_21),y_test(classleft_21),'b', '*');
hold on;
scatter(x_test(classright_21),y_test(classright_21),'b', 'o');
axis([-6,6,-6,6]);
line([(-aa_21(1)+6*aa_21(3))/aa_21(2),(-aa_21(1)-6*aa_21(3))/aa_21(2)],[-6,6],'Color','b');
grid on;
title('e=1;a=[0,0,5]的分类结果');
subplot(3,3,5);
scatter(xx1(1,:),xx1(2,:),'r', 'o');
hold on;
scatter(xx2(1,:),xx2(2,:), 'g','*');
hold on;
scatter(x_test(classleft_22),y_test(classleft_22),'b', '*');
hold on;
scatter(x_test(classright_22),y_test(classright_22),'b', 'o');
axis([-6,6,-6,6]);
line([(-aa_22(1)+6*aa_22(3))/aa_22(2),(-aa_22(1)-6*aa_22(3))/aa_22(2)],[-6,6],'Color','b');
grid on;
title('e=2;a=[0,0,5]的分类结果');
subplot(3,3,6);
scatter(xx1(1,:),xx1(2,:),'r', 'o');
hold on;
scatter(xx2(1,:),xx2(2,:), 'g','*');
hold on;
scatter(x_test(classleft_23),y_test(classleft_23),'b', '*');
hold on;
scatter(x_test(classright_23),y_test(classright_23),'b', 'o');
axis([-6,6,-6,6]);
line([(-aa_23(1)+6*aa_23(3))/aa_23(2),(-aa_23(1)-6*aa_23(3))/aa_23(2)],[-6,6],'Color','b');
grid on;
title('e=3;a=[0,0,5]的分类结果');
subplot(3,3,7);
scatter(xx1(1,:),xx1(2,:),'r', 'o');
hold on;
scatter(xx2(1,:),xx2(2,:), 'g','*');
hold on;
scatter(x_test(classleft_31),y_test(classleft_31),'b', '*');
hold on;
scatter(x_test(classright_31),y_test(classright_31),'b', 'o');
axis([-6,6,-6,6]);
line([(-aa_31(1)+6*aa_31(3))/aa_31(2),(-aa_31(1)-6*aa_31(3))/aa_31(2)],[-6,6],'Color','b');
grid on;
title('e=1;a=[2,2,-1]的分类结果');
subplot(3,3,8);
scatter(xx1(1,:),xx1(2,:),'r', 'o');
hold on;
scatter(xx2(1,:),xx2(2,:), 'g','*');
hold on;
scatter(x_test(classleft_32),y_test(classleft_32),'b', '*');
hold on;
scatter(x_test(classright_32),y_test(classright_32),'b', 'o');
axis([-6,6,-6,6]);
line([(-aa_32(1)+6*aa_32(3))/aa_32(2),(-aa_32(1)-6*aa_32(3))/aa_32(2)],[-6,6],'Color','b');
grid on;
title('e=2;a=[2,2,-1]的分类结果');
subplot(3,3,9);
scatter(xx1(1,:),xx1(2,:),'r', 'o');
hold on;
scatter(xx2(1,:),xx2(2,:), 'g','*');
hold on;
scatter(x_test(classleft_33),y_test(classleft_33),'b', '*');
hold on;
scatter(x_test(classright_33),y_test(classright_33),'b', 'o');
axis([-6,6,-6,6]);
line([(-aa_33(1)+6*aa_33(3))/aa_33(2),(-aa_33(1)-6*aa_33(3))/aa_33(2)],[-6,6],'Color','b');
grid on;
legend('第一类样本点','第二类样本点','第一类测试点','第二类测试点','第一类与第二类分界线');
title('e=1;a=[2,2,-1]的分类结果');
m12 = result12(3,:);
m13 = result13(3,:);
m21 = result21(3,:);
m22 = result22(3,:);
m23 = result23(3,:);
m31 = result31(3,:);
m32 = result32(3,:);
m33 = result33(3,:);
result = [result11;m12;m13;m21;m22;m23;m31;m32;m33];
save result result;
模式识别实验:基于感知函数准则线性分类器设计
需积分: 0 148 浏览量
2022-12-06
21:33:18
上传
评论 3
收藏 3KB ZIP 举报
Universe&Black
- 粉丝: 2
- 资源: 9
最新资源
- Qt开发知识、经验总结 包括Qss,数据库,Excel,Model/View等
- IV数据.xlsx
- 一些深度学习中的小例子,适合新手学习使用
- foldcraftlauncher_262944.apk
- 珍藏多年的基于matlab实现潮流计算程序源代码集合,包含多个潮流计算程序.rar
- 使用FPGA实现串-并型乘法器
- 基于matlab实现针对基于双曲线定位的DV-Hop算法中误差误差出一种基于加权双曲线定位的DV-Hop改进算法.rar
- 基于matlab实现由遗传算法开发的整数规划,车辆调度问题.rar
- 电视家7.0(对电视配置要求高).apk
- 免费计算机毕业设计-基于JavaEE的医院病历管理系统设计与实现(包含论文+源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈