Распознавание символов в среде Matlab с использованием нейронных сетей, страница 3

        k=rand;

        if (k>0.7)

            if Pz[i,kk*6+j]==1;

                Pz(i,kk*6+j)=0;

            else

                Pz(i,kk*6+j)=1;

            end

        end       

    end

end

end

% Накладывание шумов на матрицу Pp.

for kk=1:20

for i=1:30

    for j=1:6

        k=rand;

        if (k>0.7)

            if Pp[i,kk*6+j]==1;

                Pp(i,kk*6+j)=0;

            else

                Pp(i,kk*6+j)=1;

            end

        end       

    end

end

end

% Обучение.

% 1 – q, 2 – w, 3 – e, 4 – r, 5 – t, 6 – y

T=[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6];

% "Клонирование" матрицы T

Tz=[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T];

% Задание нижнего и верхнего пределов значения выхода сети.

ma=cat(2, zeros(75,1), ones(75,1));

% Задание нейронной сети: три слоя 15, 10 и 1 выходной нейронов

% соответственно.

net=newff(ma, [15 10 1],{'tansig' 'tansig' 'purelin'});

% Число циклов обучения.

net.trainParam.epochs=100;

net.performFcn='msereg';

net.performParam.ratio=0.01;

% Шаг, с которым выводится результат обучения.

net.trainParam.show=5;

net.trainParam.goal=0.02;

net = train(net,Pz,Tz);

% Распознавание символов.

%Подсчет удачных распознаваний

k=0;

for i=1:20

    for j=1:12

        % процесс распознавания

        anss(i,j)=round(sim(net, double(Pp(1:100,j+12*i))));       

    end

    if anss(i,1)==1

        k=k+1; 

    end

    if anss(i,2)==1

        k=k+1; 

    end

    if anss(i,3)==2

        k=k+1; 

    end

    if anss(i,4)==2

        k=k+1; 

    end

    if anss(i,5)==3

        k=k+1; 

    end

    if anss(i,6)==3

        k=k+1; 

    end

    if anss(i,7)==4

        k=k+1; 

    end

    if anss(i,8)==4

        k=k+1; 

    end