%%2017-12-18
%%KOSKOBAM
clear;
clc;
%%%%%两组数据%%%%%%%%%%%%%
A1 = [1; -1; 1; -1; 1; -1; 1; -1; 1; -1; 1; -1; 1; -1; 1];
A2 = [1; 1; -1; -1; 1; 1; -1; -1; 1; 1; -1; -1; 1; 1; -1];
A3 = [1; 1; 1; -1; -1; -1; 1; 1; 1; -1; -1; -1; 1; 1; 1];
A4 = [1; 1; 1; 1; -1; -1; -1; -1; 1; 1; 1; 1; -1; -1; -1];
B1 = [1; 1; 1; 1; -1; -1; -1; -1; 1; 1];
B2 = [1; 1; 1; -1; -1; -1; 1; 1; 1; -1];
B3 = [1; 1; -1; -1; 1; 1; -1; -1; 1; 1];
B4 = [1; -1; 1; -1; 1; -1; 1; -1; 1; -1];
A = [A1 A2 A3 A4];
[rowA,colA]=size(A);
B = [B1 B2 B3 B4];
[rowB,colB]=size(B);
%%%%%%%%%初始的权重矩阵%%%%%%%%%%
W = zeros(rowA,rowB);
%%%%根据Hebb规则计算W的值%%%%%%%%
i = 1:1:colA;
W = W + A(:,i)*B(:,i)'
%%%%计算能量值%%%%%
E = zeros(1,colA);
for j = 1:colA
E(j) = -A(:,j)'*W*B(:,j);
end
%%%%验证网络的抗噪能力%%%%%%
count = 10000;
diff = zeros(colA,count); %%%%统计比特位错位数
turns = zeros(colA,count);%%%统计迭代次数
for p = 1:colA
for q = 1:count
A_Noise = A(:,p).*(1-2*randerr(1,rowA,3))';
B_Noise = zeros(rowB,1);
A_temp = zeros(rowA,1);
while ~isequal(A_Noise,A_temp)
A_temp = A_Noise;
B_temp = sign(W'*A_Noise);
A_Noise = sign(W*B_temp);
turns(p,q) = turns(p,q) + 1;
% E(p) = -A_Noise'*W*B_temp
end
diff(p,q) = sum(A_Noise ~= A(:,p));
end
end
for p = 1:colB
for q = 1:count
B_Noise = B(:,p).*(1-2*randerr(1,rowB,1))';
A_Noise = zeros(rowA,1);
B_temp = zeros(rowB,1);
while ~isequal(B_Noise,B_temp)
B_temp = B_Noise;
A_temp = sign(W*B_Noise);
B_Noise = sign(W'*A_temp);
turns(p,q) = turns(p,q) + 1;
% E(p) = -A_Noise'*W*B_temp
end
diff(p,q) = sum(B_Noise ~= B(:,p));
end
end
iteration_times = mean(turns,2)
diff_mean = mean(diff,2)
correct(1)=1-sum(diff(1,:)~=0)/10000
correct(2)=1-sum(diff(2,:)~=0)/10000
correct(3)=1-sum(diff(3,:)~=0)/10000
correct(4)=1-sum(diff(4,:)~=0)/10000
BAM
おすすめ
転載: blog.csdn.net/weixin_40653652/article/details/112635146
ランキング