%Vytvorenie aktivacnej funkcie
InputVector = 0:2*pi/16:2*pi; %Definovanie vstupneho vektora
TargetVector = tansig(InputVector); %Definovanie vystupneho vektora
plot(InputVector,TargetVector,'x'); %Zobrazenie aktivacnej funkcie neuronovej siete
plot(InputVector,TargetVector);
xlabel('Vstupný vektor', 'FontSize', 18) %Popis os
ylabel('Výstupný vektor', 'FontSize', 18)

%Vytvorenie objektu neuronovej siete
PR = minmax(InputVector); %Rozsah vstupnych hodnot
Layers = [2 1]; %Pocet neuronov v jednotlivych vrstvach
TransFcns = {'tansig' 'purelin'}; %Prenosova funkcia neuronov jednotlivych vrstiev
BTF = 'traingdx'; %Nazov trenovacej funkcie
BLF = 'learngdm'; %Nazov "learning" funkcie
PF = 'mse'; %Nazov funkcie pre vypocet chyby pri trenovani
net = newff(PR,Layers,TransFcns,BTF,BLF,PF); %Ulozenie vytvoreneho objektu do premennej

%Inicializacia
net = init(net); %Nastavenie vah a prahov neuronovej siete

%Trenovanie site
[net,tr] = train(net,InputVector,TargetVector);

gensim(net) %Importovanie vytvorenej neuronovej siete do Simulinku

%Overenie spravnosti natrenovania neuronovej siete
[OutputVector] = sim(net,InputVector); %Transformacia vstupneho vektora na vystupny vektor cez neuronovu siet
subplot(2,1,1); %Vynesenie vstupneho vektora do grafu
plot(InputVector,TargetVector,'x-');
xlabel('Vstupne data', 'FontSize', 10)
ylabel('Hyperbolicky tangens', 'FontSize', 10)
subplot(2,1,2); %Vynesenie vystupneho vektora do grafu
plot(InputVector,OutputVector,'x-');
xlabel('Vystupne data naucene neuronovou sietou', 'FontSize', 10)
ylabel('Hyperbolicky tangens', 'FontSize', 10)