clear all; close all; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Genera matrice dei caratteri % Questo e' il nostro campione %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [alfabeto,targets]=prprob; [no_punti, no_caratteri] = size(alfabeto); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Rappresentazione grafica del 19o elemento: la lettera S %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure; plotchar(alfabeto(:,19)); drawnow; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Rappresentazione grafica di tutti i caratteri, % cioè delle unità che compongono il campione %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure; for ii=1:no_caratteri subplot(4,7,ii); plotchar(alfabeto(:,ii)); end drawnow; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Creazione della rete neurale %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% no_neur_nascosti = 30; net = newff(minmax(alfabeto),[no_neur_nascosti no_caratteri],... {'tansig' 'tansig'},'trainlm'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Impostazione parametri dell'algoritmo di ottimizzazione %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% net.performFcn = 'mse'; net.trainParam.goal = 0.001; net.trainParam.show = 2; net.trainParam.epochs = 60; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Stima dei parametri del modello neurale %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% X = alfabeto; Y = targets; [netopt,tr] = train(net,X,Y); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Rappresentazione grafica della capacita' % previsiva della rete %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% sigma = 0.25; % Deviazione standard del rumore aggiunto % Un singolo carattere figure; noisy_char = alfabeto(:,19)+randn(35,1)*sigma; subplot(1,2,1); plotchar(noisy_char); out_rete = sim(netopt,noisy_char); out_rete2 = compet(out_rete); carattere_previsto = find(compet(out_rete2) == 1); subplot(1,2,2); plotchar(alfabeto(:,carattere_previsto)); % Tutti i caratteri no_car_per_fig=no_caratteri/2; for jj=0:1 figure; for ii=1:no_caratteri/2 subplot(2,no_caratteri/2,ii); noisy_char = alfabeto(:,ii+(jj*no_caratteri/2))+randn(35,1)*sigma; plotchar(noisy_char); subplot(2,no_caratteri/2,ii+(no_caratteri/2)); out_rete = sim(netopt,noisy_char); out_rete2 = compet(out_rete); carattere_previsto = find(compet(out_rete2) == 1); plotchar(alfabeto(:,carattere_previsto)); end drawnow; end