Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-04-14
帖子: 3
声望力: 0 ![]() |
![]()
function Hopfield()
tic clc; %定义个目标向量 t5=[0 0 0 0 0 0 1;0 0 0 0 0 0 1;0 0 1 1 1 1 1;... 0 0 1 1 1 1 1;1 0 0 0 0 1 1;1 1 1 1 1 0 0;... 1 1 1 1 1 0 0;0 0 0 0 0 1 1]'; t7=[0 0 0 0 0 0 0;0 0 0 0 0 0 0;1 1 1 1 1 0 0;... 1 1 1 1 1 0 0;1 1 1 1 1 0 0;1 1 1 0 0 1 1;... 1 1 1 0 0 1 1;1 1 1 0 0 1 1]'; t4=[0 0 1 1 0 0 1;0 0 1 1 0 0 1;0 0 1 1 0 0 1;... 0 0 1 1 0 0 1;0 0 0 0 0 0 1;0 0 0 0 0 0 1;... 1 1 1 1 0 0 1; 1 1 1 1 0 0 1;]'; t9=[1 1 1 0 0 1 1;1 0 0 1 1 0 0;1 0 0 1 1 0 0;... 1 0 0 1 1 0 0;1 1 0 0 0 0 0;1 1 1 1 1 0 0;... 1 1 1 1 1 0 0;1 1 1 1 1 0 0]'; T=[t7 t5 t4 t9]; %形成总的目标向量 net=newhop(T); %设计hopfield网络 %定义测试样本 T7=[0 0 0 0 1 0 1;0 1 0 0 1 0 0;0 1 1 1 1 0 0;... 1 1 1 1 1 0 0;1 0 1 1 1 0 1;0 1 1 1 0 0 1;... 0 0 1 1 0 0 1;0 1 1 1 0 0 1]'; %7×8 subplot(1,3,1); figt(t7); title('待试数字') subplot(1,3,2); figt(T7); %绘制测试样本二值化图像 title('测试样本') %网络仿真 y=sim(net,8,[],T7); y=y>0.5 %二值化 subplot(1,3,3); 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 这是用matlab编程,利用hopfield神经网络识别数字的程序,在仿真的时候不能进行仿真,sim()语句,请高手指教!!!谢谢 |
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2009-04-14
帖子: 3
声望力: 0 ![]() |
![]()
你好!程序是可以运行,但是没有达到要求,要求第三个仿真图像应近似于第一个标准图像,但是这个程序结果很明显,并没有进行仿真,仿真输出的矩阵和输入的矩阵是一样的。您能帮忙再看看吗?谢谢了
|
![]() |
![]() |
![]() |
#4 |
普通会员
注册日期: 2007-04-04
帖子: 91
声望力: 20 ![]() |
![]()
function Hopfield()
tic clc; %定义个目标向量 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]'; 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=[t7 t5 t4 t9]; %形成总的目标向量 net=newhop(T); %设计hopfield网络 %定义测试样本 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); 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 我不怎么懂神经网络,看了一下Help,上面是我的理解不知道对不对,附图:hopfield.jpg 此帖于 2010-04-11 20:42 被 beginer 编辑。 原因: 多了两句,红颜色的,删掉,不影响结果。 |
![]() |
![]() |
![]() |
#5 |
初级会员
注册日期: 2009-04-14
帖子: 3
声望力: 0 ![]() |
![]()
太谢谢你了!!!结果完全正确。我还要好好研究研究啊,呵呵。。。。。。
|
![]() |
![]() |
![]() |
#6 |
普通会员
注册日期: 2007-04-04
帖子: 91
声望力: 20 ![]() |
![]()
对了,把上面红颜色的两句删掉,多余了。
|
![]() |
![]() |