function Hopfield() tic clc; %定义个目标向量 数字5的点阵表示: t5=[-1 -1 -1 -1 -1 -1 1;-1 -1 -1 -1 -1 -1 1;-1 -1 1 1 1 1 1;... -1 -1 1 1 1 1 1;1 -1 -1 -1 -1 1 1;1 1 1 1 1 -1 -1;... 1 1 1 1 1 -1 -1;-1 -1 -1 -1 -1 1 1]';构成这个数字部分的用1表示,否则用-1表示 t7=[-1 -1 -1 -1 -1 -1 -1;-1 -1 -1 -1 -1 -1 -1;1 1 1 1 1 -1 -1;... 1 1 1 1 1 -1 -1;1 1 1 1 1 -1 -1;1 1 1 -1 -1 1 1;... 1 1 1 -1 -1 1 1;1 1 1 -1 -1 1 1]'; t4=[-1 -1 1 1 -1 -1 1;-1 -1 1 1 -1 -1 1;-1 -1 1 1 -1 -1 1;... -1 -1 1 1 -1 -1 1;-1 -1 -1 -1 -1 -1 1;-1 -1 -1 -1 -1 -1 1;... 1 1 1 1 -1 -1 1; 1 1 1 1 -1 -1 1;]'; t9=[1 1 1 -1 -1 1 1;1 -1 -1 1 1 -1 -1;1 -1 -1 1 1 -1 -1;... 1 -1 -1 1 1 -1 -1;1 1 -1 -1 -1 -1 -1;1 1 1 1 1 -1 -1;... 1 1 1 1 1 -1 -1;1 1 1 1 1 -1 -1]'; T=[t2 t5 t4 t9]; %形成总的目标向量,设定网络的目标向量 net=newhop(T); %设计hopfield网络;功能 生成一个Hopfield回归网络。 说明 net为生成的神经网络,具有在T中的向量上稳定的点;T是具有Q个目标向量的R*Q矩阵(元素必须为-1或1)。 %定义测试样本 T7=[-1 -1 -1 -1 1 -1 1;-1 1 -1 -1 1 -1 -1;-1 1 1 1 1 -1 -1;... 1 1 1 1 1 -1 -1;1 -1 1 1 1 -1 1;-1 1 1 1 -1 -1 1;... -1 -1 1 1 -1 -1 1;-1 1 1 1 -1 -1 1]'; %7×8 subplot(2,3,1); figt(t5);输出二值化图像 title('待试数字5') subplot(2,3,2); 这是MATLAB的语句吧,意思是在一个2行3列共6个子图的图中,定位第1个图来进行操作(画图)。最后面那个1表示第1个子图。 那个数字的变化来定位不同的子图 figt(t7); title('待试数字7') subplot(2,3,3); figt(t4); title('待试数字4') subplot(2,3,4); figt(t9); title('待试数字9') subplot(2,3,5); figt(T7); %绘制测试样本二值化图像 title('测试样本') %网络仿真 for i=1:8 T=[t5(:,i) t7(:,i) t4(:,i) t9(:,i)]; net=newhop(T); %设计hopfield网络 y(:,i)=sim(net,1,[],T7(:,i)); end for i=1:7 for j=1:8 if y(i,j)<=0 y(i,j)=-1; else y(i,j)=1; end end end subplot(2,3,6); figt(y); %绘出仿真输出二值化图像 title('仿真结果') toc %绘制测试样本二值化图像的自定义函数 function figt(t) hold on axis square %以当前坐标轴范围为基础,将坐标轴区域调整为方格形 for j=1:8 for i=1:7 if t((j-1)*7+i)<=0 fill([i i+1 i+1 i],[9-j,9-j,10-j,10-j],'k') else fill([i i+1 i+1 i],[9-j,9-j,10-j,10-j],'w') end end end hold off
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助