% SOFM.m
% 利用SOFM神经网络对变压器进行故障诊断
p1 = xlsread('train', 'A1 : E17')';
p2 = xlsread('test', 'A1 : E8')';
t1 = xlsread('train', 'I1 : I17')';
t2 = xlsread('test', 'I1 : I8')';
% 对输入训练样本进行归一化
[P1, ps] = mapminmax(p1);
net = newsom(minmax(P1), [2 3]);
net.trainParam.epochs = 500;
% 训练前进行初始化
net = train(net, P1);
y1 = sim(net, P1);
y1 = vec2ind(y1)
%获取训练后的自组织神经网络的权值
w1 = net.IW{1, 1};
%绘出训练后自组织神经网络的权值分布图
% plotsom(w1, net.layers{1}.distances);
%输入测试数据
P2 = mapminmax('apply', p2, ps);
%对网络进行测试
y = sim(net, P2);
y = vec2ind(y)