z6 3neur 3neur.M, WAT, SEMESTR VIII, Metody i zadania rozpoznawania wzorców
[ Pobierz całość w formacie PDF ]
%Aproksymacja liniowaclearosie=[-20 20 -10 10];L=8;u1=[-4 -8];u2=[5 -6];u3=[-5 2];u4=[-10 6];u5=[0 8];u6=[10 8];u7=[15 5];%u8=[12 0];u8=[1 0];U=[u1;u2;u3;u4;u5;u6;u7;u8];%z=[1 -1 -1;1 -1 -1; -1 1 -1; -1 1 -1; -1 1 -1; -1 -1 1;-1 -1 1; -1 -1 1];z=[1 -1 -1;1 -1 -1; -1 1 -1; -1 1 -1; -1 1 -1; -1 -1 1;-1 -1 1; -1 1 -1];figure(1);clf;subplot(1,3,1);newplot;hold on;axis(osie);[lw,lk]=size(U);kolor1='bs';kolor2='ro';kolor3='gd';for licz=1:lw;if z(licz,1)==1plot(U(licz,1),U(licz,2),kolor1);elseif z(licz,2)==1plot(U(licz,1),U(licz,2),kolor2);elseif z(licz,3)==1plot(U(licz,1),U(licz,2),kolor3);end;end;Uk= [ones(lw,1) U];disp('Rozwi?zanie analityczne')Wa=inv(Uk'*Uk)*Uk'*zr=Uk*Wa-z;disp('B??d aproksymacji')wariancja=diag(r'*r)'KOLOR=['b', 'r', 'g'];for licz=1:3wrys=Wa(:,licz);rprosta(wrys,osie,KOLOR(licz));end;title('Rozwiazanie analityczne');%%%Funkcje TOOLBOXa% TRAINLM is a network training function% that updates weight and bias values according to Levenberg-Marquardt optimization.% You can create a standard network that uses TRAINLM with NEWFF.% net=newff(zakresy,[1],{'purelin'});% To prepare a custom network to be trained with TRAINLM:% 1) Set NET.trainFcn to 'trainlm'.% This will set NET.trainParam to TRAINLM's default parameters.% 2) Set NET.trainParam properties to desired values.zakresy=[-20 20; -10 10]net = newff(zakresy,[3,3],{'tansig','purelin' });% Dane ucz?ceP=U'T=z'% Treningnettr = train(net,P,T);% Weryfikacja uczenia: obliczenie wyj?cia dla danych ucz?cychdisp('Por?wnanie wynik?w wyj?? z sieci dla zbioru ucz?cego');wynik = sim(nettr,P)z'N=19;dx=(zakresy(1,2)-zakresy(1,1))/N;dy=(zakresy(2,2)-zakresy(2,1))/N;dotestux=zakresy(1,1):dx:zakresy(1,2);dotestuy=zakresy(2,1):dy:zakresy(2,2);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%do_testu=[];for x=zakresy(1,1):dx:zakresy(1,2)for y=zakresy(2,1):dy:zakresy(2,2)do_testu=[do_testu, [x;y]];end;end;wynik_testu=sim(nettr,do_testu);figure(1);subplot(1,3,2);newplot;hold on;[lw,lk]=size(do_testu);kolor1='b.';kolor2='r.';kolor3='g.';czulosc=0.975;for licz=1:lk;if wynik_testu(1,licz)>czuloscplot(do_testu(1,licz),do_testu(2,licz),kolor1);elseif wynik_testu(2,licz)>czuloscplot(do_testu(1,licz),do_testu(2,licz),kolor2);elseif wynik_testu(3,licz)>czuloscplot(do_testu(1,licz),do_testu(2,licz),kolor3);end;end;[lw,lk]=size(U);kolor1='bs';kolor2='ro';kolor3='gd';for licz=1:lw;if z(licz,1)==1plot(U(licz,1),U(licz,2),kolor1);elseif z(licz,2)==1plot(U(licz,1),U(licz,2),kolor2);elseif z(licz,3)==1plot(U(licz,1),U(licz,2),kolor3);end;end;title('Przekraczanie progu');figure(1);subplot(1,3,3);newplot;hold on;[lw,lk]=size(do_testu);kolor1='b.';kolor2='r.';kolor3='g.';for licz=1:lk;if wynik_testu(1,licz)==max(wynik_testu(:,licz))plot(do_testu(1,licz),do_testu(2,licz),kolor1);elseif wynik_testu(2,licz)==max(wynik_testu(:,licz))plot(do_testu(1,licz),do_testu(2,licz),kolor2);elseif wynik_testu(3,licz)==max(wynik_testu(:,licz))plot(do_testu(1,licz),do_testu(2,licz),kolor3);end;end;[lw,lk]=size(U);kolor1='bs';kolor2='ro';kolor3='gd';for licz=1:lw;if z(licz,1)==1plot(U(licz,1),U(licz,2),kolor1);elseif z(licz,2)==1plot(U(licz,1),U(licz,2),kolor2);elseif z(licz,3)==1plot(U(licz,1),U(licz,2),kolor3);end;end;title('Zasada maksimum');obraz=zeros(N+1,N+1,3);wspolrzX=[];wspolrzY=[];licz=0;for lx=1:(N+1)for ly=1:(N+1)licz=licz+1;wspolrzX=[wspolrzX, zakresy(1,1)+(lx-1)*dx];wspolrzY=[wspolrzY, zakresy(2,1)+(ly-1)*dy];obraz(lx,ly,:)=wynik_testu(:,licz);end;end;[lw,lk]=size(do_testu);czulosc=0.9;figure(2);clf;subplot(1,3,1);hold on;axis(osie);% warstwa=obraz(:,:,1);% imagesc(wspolrzX,wspolrzY,warstwa)for licz=1:lk;if wynik_testu(1,licz)>czuloscplot(do_testu(1,licz),do_testu(2,licz),'b.');elseif wynik_testu(1,licz)<-czuloscplot(do_testu(1,licz),do_testu(2,licz),'y.');end;end;title('Obiekty niebieskie')subplot(1,3,2);hold on;axis(osie);% warstwa=obraz(:,:,2);% imagesc(wspolrzX,wspolrzY,warstwa)for licz=1:lk;if wynik_testu(2,licz)>czuloscplot(do_testu(1,licz),do_testu(2,licz),'r.');elseif wynik_testu(2,licz)<-czuloscplot(do_testu(1,licz),do_testu(2,licz),'y.');end;end;title('Obiekty czerwone')subplot(1,3,3);hold on;axis(osie);% warstwa=obraz(:,:,3);% imagesc(wspolrzX,wspolrzY,warstwa)title('Obiekty zielone')% colormap('gray')for licz=1:lk;if wynik_testu(3,licz)>czuloscplot(do_testu(1,licz),do_testu(2,licz),'g.');elseif wynik_testu(3,licz)<-czuloscplot(do_testu(1,licz),do_testu(2,licz),'y.');end;end;
[ Pobierz całość w formacie PDF ]