神经网络模式识别Matlab程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
神经网络模式识别Matlab程序识别加入20%噪声的A-Z26个字母。(20%噪声情况下,完全能够识别)clear;close all;
clc;
[alphabet,targets]=prprob;
[R,Q]=size(alphabet);
[S2,Q]=size(targets);
S1=10;
P=alphabet;
net=newff(minmax(P),[S1,S2],{'logsig''logsig'},'traingdx'); net.LW{2,1}=net.LW{2,1}*0.01;
net.b{2}=net.b{2}*0.01;
T=targets;
net.performFcn='sse';
net.trainParam.goal=0.1;
net.trainParam.show=20;
net.trainParam.epochs=5000;
net.trainParam.mc=0.95;
[net,tr]=train(net,P,T);
netn=net;
netn.trainParam.goal=0.6;
netn.trainParam.epochs=300;
T=[targets targets targets targets];
for pass=1:10;
P=[alphabet,alphabet,...
(alphabet+randn(R,Q)*0.1),...
(alphabet+randn(R,Q)*0.2)];
[netn,tr]=train(netn,P,T);
end
netn.trainParam.goal=0.1;
netn.trainParam.epochs=500;
netn.trainParam.show=5;
P=alphabet;
T=targets;
[netn,tr]=train(netn,P,T);
noise_percent=0.2;
for k=1:26
noisyChar=alphabet(:,k)+randn(35,1)*noise_percent;
subplot(6,9,k+floor(k/9.5)*9);
plotchar(noisyChar);
de_noisyChar=sim(net,noisyChar);
de_noisyChar=compet(de_noisyChar);
answer=find(de_noisyChar==1);
subplot(6,9,k+floor(k/9.5)*9+9);
plotchar(alphabet(:,answer));
end
set(gcf,'Position',[10,60,900,700],'color','w')运行结果如下:
有噪声
成功识别