⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mybp.m

📁 该程序通过感知器实现布尔逻辑运算
💻 M
字号:
%global ww1,ww2;
val1=get(bool_method_h,'Value');
val2=get(train_h,'Value');
val3=get(recog_h,'Value');
%val4=get(shurudata1_h,'String');
%val5=get(shurudata2_h,'String');
%val8=get(shuchudata_h,'String');
%val6=int8(val4)-48;
%val7=int8(val5)-48;
%val6=8;
%val7=9;
%val4=char(val6+48);
%val5=char(val7+48);
%string=val4;
%set(shuchudata_h,'string',val6+val7);
%训练模式
%if(val1==1)
 %   disp('shuchu');
%else 
%    disp('notshuchu');
%end
if(val2==1)
    switch (val1)
        case 1
              a=[0 0;0 1;1 0;1 1];
              b=[0.0 0.0 0.0 1.0];
              e=[0.0 0.0 0.0 0.0];
              d=[0.0 0.0 0.0 0.0];
              w=0.5*rand(1,2);
              summ=0;
           for time=1:800
               summ=0;
             for i=1:4   %样本数
                 for j=1:2   %一个样本的输出
                     e(i)=e(i)+a(i,j)*w(1,j);
                 end
                 d(i)=b(i)-sgm(e(i));   %误差               
             end 
                  e=[0.0 0.0 0.0 0.0];
                for i=1:4
                     if(abs(d(i))<=0.05)  summ=summ+1;
                      end
                  end
                   if(summ==4)    
                       disp('训练完成');
                       w1=w(1,1);
                       w2=w(1,2);
                       break
                   end
               for j=1:2
                  for i=1:4
                     w(1,j)=w(1,j)+0.009*d(i)*a(i,j);
                 end
               end
           end 
                 if(time==800)
                  disp('训练失败');
                 end
               
        case 2
              a=[0 0;0 1;1 0;1 1];
              b=[0.0 1.0 1.0 1.0];
              e=[0.0 0.0 0.0 0.0];
              d=[0.0 0.0 0.0 0.0];
              ww=rand(1,2);
              summ=0;
           for time=1:800
               summ=0;
               for i=1:4   %样本数
                 for j=1:2   %一个样本的输出
                     e(i)=e(i)+a(i,j)*ww(1,j);
                 end
                 d(i)=b(i)-sgm(e(i));   %误差           
               end
                 e=[0.0 0.0 0.0 0.0];
                 for i=1:4
                  if(abs(d(i))<=0.05)  summ=summ+1;
                  end
                 end
                   if(summ==4)    
                       disp('训练完成');
                       ww1=ww(1,1);
                       ww2=ww(1,2);
                       break
                   end               
                 for j=1:2
                     for i=1:4
                     ww(1,j)=ww(1,j)+0.098*d(i)*a(i,j);
                     end  
                  end  
           end 
                 if(time==800)
                  disp('训练失败');
                 end  
          
        case 3          
              a=[0 0;0 1;1 0;1 1];
              b=[0.0 1.0 1.0 0.0];
              e=[0.0 0.0 0.0 0.0];
              d=[0.0 0.0 0.0 0.0];
              www=rand(1,2);
              summ=0;
           for time=1:1000
               summ=0;
             for i=1:4   %样本数
                 for j=1:2   %一个样本的输出
                     e(i)=e(i)+a(i,j)*www(1,j);
                 end
                 d(i)=b(i)-ssgm(e(i));   %误差               
             end 
                 e=[0.0 0.0 0.0 0.0];
                for i=1:4
                     if(abs(d(i))<=0.05)  summ=summ+1;
                      end
                  end
                   if(summ==4)    
                       disp('训练完成');
                       www1=www(1,1);
                       www2=www(1,2);
                       break
                   end
               for j=1:2
                  for i=1:4
                     www(1,j)=www(1,j)+0.01*d(i)*a(i,j);
                 end
               end
           end 
                 if(time==1000)
                  disp('训练失败');
                 end           
        otherwise
            %disp('训练失败');
    end
end

if(val3==1)
    switch (val1)
        case 1
            val4=get(shurudata1_h,'String');
            val5=get(shurudata2_h,'String');
            a=double(val4)-48;
            b=double(val5)-48; 
            c=sgm(a*w1+b*w2);
            %c=0.1*4+0.3*6;
            set(shuchudata_h,'string',c);
            
         case 2
            val4=get(shurudata1_h,'String');
            val5=get(shurudata2_h,'String');
            a=double(val4)-48;
            b=double(val5)-48; 
            c=sgm(a*ww1+b*ww2);
            %c=0.1*4+0.3*6;
            set(shuchudata_h,'string',c); 
            
           case 3
            val4=get(shurudata1_h,'String');
            val5=get(shurudata2_h,'String');
            a=double(val4)-48;
            b=double(val5)-48; 
            c=ssgm(a*www1+b*www2);
            %c=0.1*4+0.3*6;
            set(shuchudata_h,'string',c);   
        otherwise
             disp('计算不出');
    end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -