资源简介
基于MATLAB的用神经网的方法实现数字识别(代码+PPT)
代码片段和文件信息
% 数字识别
% 生成输入向量和目标向量
clear all;
‘LOADING......正在生成输入向量和目标向量,请稍等...‘
for kk = 0:49
p1=ones(1616);%初始化为16*16的二值图像像素值(全白)
m=strcat(‘bpnums\‘int2str(kk)‘.bmp‘);%形成训练样本图像的文件名
x=imread(m‘bmp‘);%读入训练样本图像文件
bw=im2bw(x0.5);%将读入的训练样本图像转化为二值图像
[ij]=find(bw==0);%寻找二值图像中像素值为0(黑)的行号和列号
imin=min(i);%寻找二值图像中像素值为0的最小行号
imax=max(i);%。。。。。。。。。。。。最大行号
jmin=min(j);%。。。。。。。。。。。。最小列号
jmax=max(j);%。。。。。。。。。。。。最大列号
bw1=bw(imin:imaxjmin:jmax);%街取图像像素值为0的最大矩形区域
rate=16/max(size(bw1));%计算截取图像转换成16*16的二值图像的缩放比例
bw1=imresize(bw1rate);%将截取图像转换成16*16的二值图像
[ij]=size(bw1);%转换图像的大小
i1=round((16-i)/2);%计算转换图像与标准16*16的图像的左边界差
j1=round((16-j)/2);%计算转换图像与标准16*16图像的上边界差
p1(i1+1:i1+ij1+1:j1+j)=bw1;%将截取图像转换成标准的16*16图像
%p1=-1.*p1+ones(1616);%反色处理
%以图像数据形成神经网络输入向量
for m=0:15
p(m*16+1:(m+1)*16kk+1)=p1(1:16m+1);
end
%形成神经网络目标向量
switch kk
case{010203040}
t(kk+1)=0;
case{111213141}
t(kk+1)=1;
case{212223242}
t(kk+1)=2;
case{313233343}
t(kk+1)=3;
case{414243444}
t(kk+1)=4;
case{515253545}
t(kk+1)=5;
case{616263646}
t(kk+1)=6;
case{717273747}
t(kk+1)=7;
case{818283848}
t(kk+1)=8;
case{919293949}
t(kk+1)=9;
end
end
‘LOAD OK.‘
save PT p t;
% 创建和训练BP网络
clear all;
load PT p t;
pr(1:2561)=0;
pr(1:2562)=1;
net=newff(pr[25 1]{‘logsig‘ ‘purelin‘} ‘traingdx‘ ‘learngdm‘);
net.trainParam.epochs=3000;
net.trainParam.goal=0.001;
net.trainParam.show=10;
net.trainParam.lr=0.05;
net=train(netpt)
‘TRAIN OK.‘
save bpnet net;
% 识别
for times=0:999
clear all;
p(1:2561)=1;
p1=ones(1616);
load bpnet net;
test=input(‘FileName:‘ ‘s‘);
x=imread(test‘bmp‘);
bw=im2bw(x0.5);
[ij]=find(bw==0);
imin=min(i);
imax=max(i);
jmin=min(j);
jmax=max(j);
bw1=bw(imin:imaxjmin:jmax);
rate=16/max(size(bw1));
bw1=imresize(bw1rate);
[ij]=size(bw1);
i1=round((16-i)/2);
j1=round((16-j)/2);
p1(i1+1:i1+ij1+1:j1+j)=bw1;
%p1=-1.*p1+ones(1616);
for m=0:15
p(m*16+1:(m+1)*161)=p1(1:16m+1);
end
[aPfAf]=sim(netp);
imshow(p1);
a=round(a)
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2773 2002-01-01 11:47 bp\bp.asv
文件 2773 2008-05-20 13:43 bp\bp.m
文件 112815 2002-01-01 09:47 bp\bpnet.mat
目录 0 2010-06-20 09:20 bp\bpnums\
文件 3942 2008-05-19 20:41 bp\bpnums\0.bmp
文件 3942 2008-05-19 20:42 bp\bpnums\1.bmp
文件 3942 2008-05-19 20:45 bp\bpnums\10.bmp
文件 3942 2008-05-19 20:46 bp\bpnums\11.bmp
文件 3942 2008-05-19 20:46 bp\bpnums\12.bmp
文件 3942 2008-05-19 20:46 bp\bpnums\13.bmp
文件 3942 2008-05-19 20:46 bp\bpnums\14.bmp
文件 3942 2008-05-19 20:46 bp\bpnums\15.bmp
文件 3942 2008-05-19 20:47 bp\bpnums\16.bmp
文件 3942 2008-05-19 20:47 bp\bpnums\17.bmp
文件 3942 2008-05-19 20:47 bp\bpnums\18.bmp
文件 3942 2008-05-19 20:47 bp\bpnums\19.bmp
文件 3942 2008-05-19 20:43 bp\bpnums\2.bmp
文件 3942 2008-05-19 20:48 bp\bpnums\20.bmp
文件 3942 2008-05-19 20:49 bp\bpnums\21.bmp
文件 3942 2008-05-19 20:49 bp\bpnums\22.bmp
文件 3942 2008-05-19 20:49 bp\bpnums\23.bmp
文件 3942 2008-05-19 20:49 bp\bpnums\24.bmp
文件 3942 2008-05-19 20:49 bp\bpnums\25.bmp
文件 3942 2008-05-19 20:49 bp\bpnums\26.bmp
文件 3942 2008-05-19 20:50 bp\bpnums\27.bmp
文件 3942 2008-05-19 20:50 bp\bpnums\28.bmp
文件 3942 2008-05-19 20:50 bp\bpnums\29.bmp
文件 3942 2008-05-19 20:43 bp\bpnums\3.bmp
文件 3942 2008-05-19 20:50 bp\bpnums\30.bmp
文件 3942 2008-05-19 20:50 bp\bpnums\31.bmp
文件 3942 2008-05-19 20:51 bp\bpnums\32.bmp
............此处省略36个文件信息
- 上一篇:相场法建模
- 下一篇:高压直流输电MATLAB仿真
相关资源
- 高压直流输电MATLAB仿真
- 最大似然分类算法
- leach与sep算法matlab代码
- matlab编写的lpc编解码程序
- 宽度学习matlab代码
- svm+smo matlab程序
- 谐振腔matlab
- nc 归一化相关系数 图像对比 图像相似
- 归一化均方差 matlab
- stucki 半色调 图像处理 二值 matlab
- stevenson 半色调 图像处理 二值 matlab
- burkers 半色调 matlab
- 蚁群算法实现TSP问题
- matlab生成DDA直线
- MATLAB程序——单摆摆动的动画
- BPSK,QPSK Matlab仿真代码
- MOEA/D的MATLAB代码
- MATLAB 的电机系统仿真
- MATLAB教学视频:详解数据插值的MATL
- MATLAB源程序代码分享:MATLAB实现牛顿
- 双基地MIMO雷达目标跟踪算法matlab程序
- 基于小波变换的数字水印嵌入与提取
- OSTU多阈值分割MATLAB程序
- matlab使用libsvm进行分类代码.rar
- 多目标粒子群算法matlab
- 车辆路径调度问题matlab
- 运用粒子群算法解决车间调度问题m
- matlab 2016a osgenericvideointerface
- MATLAB 2010a 激活文件 安装key lic_stan
- Park变换和Clark变换
评论
共有 条评论