z6 3neur 3neur M



%Aproksymacja liniowa
clear
osie=[-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)==1
plot(U(licz,1),U(licz,2),kolor1);
elseif z(licz,2)==1
plot(U(licz,1),U(licz,2),kolor2);
elseif z(licz,3)==1
plot(U(licz,1),U(licz,2),kolor3);
end;
end;

Uk= [ones(lw,1) U];
disp('Rozwiązanie analityczne')
Wa=inv(Uk'*Uk)*Uk'*z
r=Uk*Wa-z;
disp('Błąd aproksymacji')
wariancja=diag(r'*r)'

KOLOR=['b', 'r', 'g'];
for licz=1:3
wrys=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ące
P=U'
T=z'
% Trening
nettr = train(net,P,T);





% Weryfikacja uczenia: obliczenie wyjścia dla danych uczących
disp('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)>czulosc
plot(do_testu(1,licz),do_testu(2,licz),kolor1);
elseif wynik_testu(2,licz)>czulosc
plot(do_testu(1,licz),do_testu(2,licz),kolor2);
elseif wynik_testu(3,licz)>czulosc
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)==1
plot(U(licz,1),U(licz,2),kolor1);
elseif z(licz,2)==1
plot(U(licz,1),U(licz,2),kolor2);
elseif z(licz,3)==1
plot(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)==1
plot(U(licz,1),U(licz,2),kolor1);
elseif z(licz,2)==1
plot(U(licz,1),U(licz,2),kolor2);
elseif z(licz,3)==1
plot(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)>czulosc
plot(do_testu(1,licz),do_testu(2,licz),'b.');
elseif wynik_testu(1,licz)<-czulosc
plot(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)>czulosc
plot(do_testu(1,licz),do_testu(2,licz),'r.');
elseif wynik_testu(2,licz)<-czulosc
plot(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)>czulosc
plot(do_testu(1,licz),do_testu(2,licz),'g.');
elseif wynik_testu(3,licz)<-czulosc
plot(do_testu(1,licz),do_testu(2,licz),'y.');
end;
end;

Wyszukiwarka