⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 somtest.m

📁 matlab写的神经网络的几个演示程序
💻 M
字号:
clc
clear all
close all
%产生样本数据P,P中包括三类二维矢量
range=[-2 2;-2 2];%样本数据取值范围
class=3;%样本数据类别数
num=30;%每类样本数据个数
std=0.1;%每类样本数据的方差
P=nngenc(range,class,num,std);
%画第一幅图:样本数据分布图
plot(P(1,:),P(2,:),'*','markersize',5);
axis([-2 2 -2 2]);
%建立竞争层网络(由于样本数据分三类,因此竞争层由三个神经元构成)
klr=0.1;%权值学习速率
clr=0.01;%阈值学习速率
% net=newc(range,class,klr,clr);
net=newsom(minmax(P),[1 class]);
%对网络进行训练
net.trainParam.epochs=3;
net.trainParam.show=100;
net=train(net,P);
%在第一幅图上画出竞争层神经元权值,也就是每类样本数据的聚类中心
w=net.IW{1};
hold on;
plot(w(:,1),w(:,2),'ob');
title('Tnput data & Weights');
%利用原始样本数据对网络进行仿真
% figure;
% plotsom(net.iw{1,1},net.layers{1}.distances);
Y=sim(net,P);
Y1=vec2ind(Y)
%画第二幅图:用不同符号标注数据分类结果
figure;
for i=1:(class*num)
    if Y1(i)==1
        plot(P(1,i),P(2,i),'*');
    elseif Y1(i)==2
        plot(P(1,i),P(2,i),'+');
    elseif Y1(i)==3
        plot(P(1,i),P(2,i),'s');
    else
        plot(P(1,i),P(2,i),'x');
    end
    hold on;
end
axis([-2 2 -2 2]);
plot(w(:,1),w(:,2),'ob');
% title('class 1:* class 2:+ class 3:s class 4:x');
title('聚类结果');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -