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

📄 juleirbf.m

📁 用matlab编写的聚类rbf神经网络曲线拟和程序。
💻 M
字号:
samnum=100;
testsamnum=101;
indim=1;
clusternum=10;
overlap=1.0;
rand('state',sum(100*clock))
noisevar=0.1;
noise=noisevar*randn(1,samnum);
samin=8*rand(1,samnum)-4;
samoutnonoise=1.1*(1-samin+2*samin.^2).*exp(-samin.^2/2);
samout=samoutnonoise+noise;
testsamin=-4:0.08:4;
testsamout=1.1*(1-testsamin+2*testsamin.^2).*exp(-testsamin.^2/2);
figure
hold on
grid
plot(samin,samout,'r+')
plot(testsamin,testsamout,'r--')
xlabel('input x');
ylabel('output y');
centers=samin(:,1:clusternum);
numberinclusters=zeros(clusternum,1);
indexclusters=zeros(clusternum,samnum);
while 1,
    numberinclusters=zeros(clusternum,1);
    indexclusters=zeros(clusternum,samnum);
    for i=1:samnum
        alldistance=dist(centers',samin(:,i));
        [mindist,pos]=min(alldistance);
        numberinclusters(pos)=numberinclusters(pos)+1;
        indexinclusters(pos,numberinclusters(pos))=i;
    end
    oldcenters=centers;
    for i=1:clusternum
        index=indexinclusters(i,1:numberinclusters(i));
        centers(:,i)=mean(samin(:,index)')';
    end
    equalnum=sum(sum(centers==oldcenters));
    if equalnum==indim*clusternum,
        break,
    end
end
alldistances=dist(centers',centers);
maximum=max(max(alldistances));
for i=1:clusternum
    alldistances(i,i)=maximum+1;
end
spreads=overlap*min(alldistances)';
distance=dist(centers',samin);
spreadsmat=repmat(spreads,1,samnum);
hiddenunitout=radbas(distance./spreadsmat);
hiddenunitoutex=[hiddenunitout' ones(samnum,1)]';
w2ex=samout*pinv(hiddenunitoutex);
w2=w2ex(:,1:clusternum);
b2=w2ex(:,clusternum+1);
testdistance=dist(centers',testsamin);
testspreadsmat=repmat(spreads,1,testsamnum);
testhiddenunitout=radbas(testdistance./testspreadsmat);
testnnout=w2*testhiddenunitout+b2;
plot(testsamin,testnnout,'r-')
w2
b2
% 训练好的权值、阈值的输出方法是:
% 输入到隐层权值:w1=net.iw{1,1}
% 隐层阈值:theta1=net.b{1}
% 隐层到输出层权值:w2=net.lw{2,1};
% 输出层阈值:theta2=net.b{2}

⌨️ 快捷键说明

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