代码:
离散Hopfield的分类——高校科研能力评价
clear all clc
%% 导入数据
load cla.mat
%% 目标向量
T=[cla_1 cla_2 cla_3 cla_4 cla_5]; %% 创建网络
net=newhop(T); %% 导入待分类样本 load sim.mat
A={[sim_1 sim_2 sim_3 sim_4 sim_5]}; %% 网络仿真
Y=sim(net,{25 20},{},A); %% 结果显示
Y1=Y{20}(:,1:5) Y2=Y{20}(:,6:10) Y3=Y{20}(:,11:15) Y4=Y{20}(:,16:20) Y5=Y{20}(:,21:25) %% 绘图
result={T;A{1};Y{20}}; figure for p=1:3 for k=1:5
subplot(3,5,(p-1)*5+k)
temp=result{p}(:,(k-1)*5+1:k*5); [m,n]=size(temp);
for i=1:m
for j=1:n
if temp(i,j)>0
plot(j,m-i,'ko','MarkerFaceColor','k');
else
plot(j,m-i,'ko');
end hold on
end
end axis([0 6 0 12]) axis off
if p==1
title(['cla' num2str(k)])
elseif p==2
title(['pre-sim' num2str(k)])
else
title(['sim' num2str(k)])
end
end end %
noisy=[1 -1 -1 -1 -1;-1 -1 -1 1 -1; -1 1 -1 -1 -1;-1 1 -1 -1 -1; 1 -1 -1 -1 -1;-1 -1 1 -1 -1; -1 -1 -1 1 -1;-1 -1 -1 -1 1; -1 1 -1 -1 -1;-1 -1 -1 1 -1; -1 -1 1 -1 -1];
y=sim(net,{5 100},{},{noisy}); a=y{100}
%% %% 清空环境变量 clear all clc
%% 导入记忆模式
T = [-1 -1 1; 1 -1 1]'; %% 权值和阈值学习[S,Q] = size(T);
Y = T(:,1:Q-1)-T(:,Q)*ones(1,Q-1); [U,SS,V] = svd(Y); K = rank(SS);
TP = zeros(S,S); for k=1:K
TP = TP + U(:,k)*U(:,k)';
end
TM = zeros(S,S); for k=K+1:S
TM = TM + U(:,k)*U(:,k)';
end
tau = 10;
Ttau = TPTtau*T(:,Q);
h = 0.15; C1 = exp(h)-1;
C2 = -(exp(-tau*h)-1)/tau;
w = expm(h*Ttau);
b = U * [ C1*eye(K) zeros(K,S-K); zeros(S-K,K) C2*eye(S-K)] * U' * Itau; %% 导入待记忆的模式
Ai =[-0.7; -0.6; 0.6]; y0=Ai; %% 迭代计算 for i=1:5
for j=1:size(y0,1)
y{i}(j,:)=satlins(w(j,:)*y0+b(j));
end y0=y{i}; end y{1}