资源描述:
《感知器准则函数的matlab程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、clear%产生第一类和第二类原始数据,分别赋值给w1和w2变量w1=[0.16.8-3.52.04.13.1-0.80.95.03.9; 1.17.1-4.12.72.85.0-1.31.26.44.0];w2=[-3.00.52.9-0.1-4.0-1.3-3.4-4.1-5.11.9; -2.98.785.22.23.76.23.41.65.1];%分别产生第一类和第二类增广样本向量集ww1、ww2ww1=[ones(1,size(w1,2));w1];ww2=[ones(1,si
2、ze(w2,2));w2];%产生第一类和第二类样本向量的规范化增广样本向量集w12w12=[ww1,-ww2];y=zeros(1,size(w12,2));%产生1x20的行向量,赋给y,初值全为0a=[1;1;1]; %给权向量a赋初值k=0; %k为迭代次数,a(0)=[1;1;1]whileany(y<=0)fori=1:size(y,2)y(i)=a'*w12(:,i);enda=a+(sum((w12(:,find(y<=0)))'))';k=k
3、+1;enda %显示最终求得的权向量a的值k %迭代次数值figure(1)plot(w1(1,:),w1(2,:),'r+')holdonplot(w2(1,:),w2(2,:),'*')xmin=min(min(w1(1,:)),min(w2(1,:))); xmax=max(max(w1(1,:)),max(w2(1,:))); ymin=min(min(w1(2,:)),min(w2(2,:))); ymax=max(max(w1(2,:)),max(w2(2,:)))
4、; xindex=xmin-1:(xmax-xmin)/100:xmax+1;yindex=-a(2)*xindex/a(3)-a(1)/a(3);plot(xindex,yindex) 我自己模仿写的:%%测试函数点clcclearallx1=-1:0.1:1;y1=x1+2;w1=[x1;y1];x2=-1.5:0.1:0.5y2=x2;w2=[x2;y2];figure(1)plot(x1,y1,'r+')holdonplot(x2,y2,'g*')ww1=[ones(1,size(w1,2)
5、);w1];ww2=[ones(1,size(w2,2));w2];w12=[ww1,-ww2];a=[1;1;1];y=zeros(1,size(w12,2));k=1;whileany(y<=0) fori=1:size(w12,2) y(i)=a'*w12(:,i); end temp=sum((w12(:,find(y<=0)))')'; a=a+temp; k=k+1;endakxmin=min(min(x1),min(x2));xmax=max(max(x
6、1),max(x2));ymin=min(min(y1),min(y2));ymax=max(max(y2),max(y2));xindex=xmin-1:(xmax-xmin)/100:xmax+1;yindex=-a(2)/a(3)*xindex-a(1)/a(3);holdonplot(xindex,yindex)心得体会:感知器准则函数只能用来线性分类,而且最有找到判决边界一般在边界面上,具体原理还是比较好理解的。 三类情况:clear%originaldata%产生第一类、第二类和第三类
7、原始数据,分别赋给w1、w2和w3变量w1=[0.10.8-3.52.04.13.1-0.825.03.9;1.17.1-4.12.72.85.0-1.31.26.44.0];w2=[7.1-1.44.56.34.21.42.42.58.44.1;4.2-4.30.01.61.9-3.2-4.0-6.13.7-2.2];w3=[-3.052.9-0.1-4.0-1.3-3.4-4.1-5.11.9;-2.98.72.15.22.23.76.23.41.65.1];figure(1)plot(w1(1
8、,:),w1(2,:),'r.')holdonplot(w2(1,:),w2(2,:),'*')%normalized%分别产生第一类、第二类和第三类增广样本向量集ww1、ww2和ww3ww1=[ones(1,size(w1,2));w1];ww2=[ones(1,size(w2,2));w2];ww3=[ones(1,size(w3,2));w3];%产生第一类和第二类样本向量的规范化增广样本向量集w12w12=[ww1,-ww2];%%w13=[ww1,-ww3]