七个完整rbf算法源程序

时间:2013-12-05 06:10:53
【文件属性】:
文件名称:七个完整rbf算法源程序
文件大小:8KB
文件格式:RAR
更新时间:2013-12-05 06:10:53
rbf算法源程序 共有七个完整算法 % 1.基于聚类的RBF 网设计算法 % 一维输入,一维输出,逼近效果很好! 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,'k+') plot(TestSamIn,TestSamOut,'r--') xlabel('Input x'); ylabel('Output y'); Centers = SamIn(:,1:ClusterNum); NumberInClusters = zeros(ClusterNum,1); % 各类中的样本数,初始化为零 IndexInClusters = zeros(ClusterNum,SamNum); % 各类所含样本的索引号 while 1, NumberInClusters = zeros(ClusterNum,1); % 各类中的样本数,初始化为零 IndexInClusters = 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 % 将对角线上的0 替换为较大的值 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,'b-') W2
【文件预览】:
七个RBF神经网络的源程序
----RBF_cluster.m.txt(3KB)
----RBF建模.m.txt(6KB)
----RBF_OLS.m.txt(2KB)
----RBFyuce.m.txt(2KB)
----RBFFunction.m.txt(2KB)
----RBF_k.m.txt(3KB)
----RBF_Gradient.m.txt(1KB)

网友评论

  • 有用有用,就是有程序没写完哦
  • 关于隐含节点选取有漏洞,有bug。
  • 算法很实用,谢谢楼主分享。
  • 能够运行,很有用,基础学习
  • 学习神经网络很实用的学习资料,如果能多谢注释就好了
  • 程序很好用,正好是我想要的,非常感谢!
  • 有个程序没写完,其他都还好
  • 对新手帮助挺好的,很好懂
  • 还不错,但是代码有点复杂
  • 程序运行不通过
  • 程序比较全面,从中能够很好地学习神经网络的各种方法,各种算法,值得借鉴
  • 非常好的东西,一次都全了。
  • 有的程序还没写完
  • 不错的东西,是学习神经网络很好的资源
  • 能不能说明得详细些 最好写个软件使用说明
  • 里面的有些程序根本就没有写完,怎么运行啊?
  • 看着 不错,很全的程序,不过还没有调试。
  • 很好,格式调整规范,便于学习,而且很全面。
  • 写得很好,说明也很清楚