heitianshi
2010-04-11, 15:26
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()语句,请高手指教!!!谢谢
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()语句,请高手指教!!!谢谢