%The Matlab Code for pages 46-48 in our text, for the Associative Memory %example. T1=[1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1]; T2=[-1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1]; G1=[1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1]; G2=[-1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1]; F1=[1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1]; F2=[-1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1]; gg=colormap(gray); gg=gg(end:-1:1,:); subplot(2,3,1) imagesc(T1) colormap(gg) subplot(2,3,2) imagesc(G1) subplot(2,3,3) imagesc(F1) subplot(2,3,4) imagesc(T2) subplot(2,3,5) imagesc(G2) subplot(2,3,6) imagesc(F2) %************************************** %The main code starts here! %************************************** X=[T1(:) T2(:) G1(:) G2(:) F1(:) F2(:)]; T=[60 60 0 0 -60 -60]; alpha=0.03; W=randn(1,16); b=0; TotalErr=0; NumPoints=6; for k=1:60 idx=randperm(6); for j=1:NumPoints ThisOut=W*X(:,idx(j))+b; ThisErr=T(idx(j))-ThisOut; %Update the weights and biases W=W+alpha*ThisErr*X(:,idx(j))'; b=b+alpha*ThisErr; end EpochErr(k)=norm((W*X+b*ones(1,6))-T); end figure(2) plot(EpochErr);