24小时热门版块排行榜    

查看: 1059  |  回复: 4

yeyu370784

新虫 (初入文坛)

[求助] 跪求rbf程序调试

为什么我运行下面的程序,老提示我 In mean at 219 ,Divide by zero?
就是这条语句  Centers(:,i)=mean(SamIn(:,Index)')';
求高人指点

clc
clear

data=xlsread('date.xls');
train=data(1:70,;
test=data(71:77,;
SamNum=70;  %训练样本
TestSamNum=7;   %
Overlap=[0.25 0.1 0.2];

%输入输出矩阵
%训练数据
SamIn=train(:,1:3)';
SamOut=train(:,4:6)';
%预测数据
TestSamIn=test(:,1:3)';
TestSamOut=test(:,4:6)';

%节点数
InDim=3;  %输入节点
ClusterNum=38;  %隐含节点

%初始化中心
Centers=SamIn(:,1:ClusterNum);
NumberInClusters=zeros(ClusterNum,3);
IndexInClusters=zeros(ClusterNum,SamNum);

%迭代求解均值中心
while 1
    NumberInClusters=zeros(ClusterNum,3);
    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);
Maximun=max(max(AllDistance));
for i=1:ClusterNum
   AllDistances(i,i)=Maximun+1;
end
Spreads=Overlap*min(AllDistances)';

Distance=dist(Centers',Samln);
SpreadsMat_l=repmat(Spreads(:,1),1,SamNum);
SpreadsMat_2=repmat(Spreads(:,2),1,SamNum);
SpreadsMat_3=repmat(Spreads(:,3),1,SamNum);
HiddenUnitOut_1=radbas(Distance./SpreadsMat_1);
HiddenUnitOut_2=radbas(Distance./SpreadsMat_2);
HiddenUnitOut_3=radbas(Distance./SpreadsMat_3);
HiddenUnitOutEx_1=[HiddenUnitOut_l' ones(SamNum,1)]';
HiddenUnitOutEx_2=[HiddenUnitOut_2' ones(SamNum,1)]';
HiddenUnitOutEx_3=[HiddenUnitOut_3' ones(SamNum,1)]';
W2Ex_1=SamOut(1,*pinv(HiddenUnitOutEx_1);
W2Ex_2=SamOut(2,*pinv(HiddenUnitOutEx_2);
W2Ex_3=SamOut(3,*pinv(HiddenUnitOutEx_3);
W2_1=W2Ex_l(:,1:ClusterNum);
B2_1=W2Ex_l(:,ClusterNum+1);
W2_2=W2Ex_2(:,1:ClusterNum);
B2_2=W2Ex_2(:,ClusterNum+1);
W2_3=W2Ex_3(:,1:ClusterNum);
B2_3=W2Ex_3(:,ClusterNum+1);

TestDistance=dist(Centers',TestSamln);
TestSpreadsMat_l=repmat(Spreads(:,1),1,TestSamNum);
TestSpreadsMat_2=repmat(Spreads(:,2),1,TestSamNum);
TestSpreadsMat_3=repmat(Spreads(:,3),1,TestSamNum);
TestHiddenUnitOut_1=radbas(TestDistance./TestSpreadsMat_1);
TestHiddenUnitout_2=radbas(TestDistance./TestSpreadsMat_2);
TestHiddenUnitOut_3=radbas(TestDistance./TestSpreadsMat_3);
TestNNOut_1=W2_1*TestHiddenUnitOut_1+repmat(B2_1,[1,TestSamNum]);
TestNNOut_2=W2_2*TestHiddenUnitOut_2+repmat(B2_2,[1,TestSamNum]);
TestNNOut_3=W2_3*TestHiddenUnitOut_3+repmat(B2_3,[l,TestSamNurn]);
TestNNOut(1, =TestNNOut_l;
TestNNOut(2, =TestNNOut_2;
TestNNOut(3, =TestNNOut_3;
plot(TestSamIn,TestNNOut(1,,'k-');
hold on
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

youth0826

至尊木虫 (著名写手)

weibo.com/138147022

【答案】应助回帖

感谢参与,应助指数 +1
你可能没有从xls读到数据,mean的那个矩阵是空
QQ群:202610705,关注计算机视觉,模式识别,模式分析,机器学习,人工智能,统计学习,图像处理等,欢迎加入!
2楼2013-03-06 11:38:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

想飞的猪

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
《30例》里有RBF和GRNN的例子直接运行就OK的!
3楼2013-03-06 17:47:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小杜同学

新虫 (初入文坛)

??学RBF 有些疑问 请问为什么??确定中心,直接用newb(p,t,spread)??行????
4楼2013-05-08 10:31:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liuyanzhe

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by 想飞的猪 at 2013-03-06 17:47:01
《30例》里有RBF和GRNN的例子直接运行就OK的!

《30例》是什么?
5楼2015-03-27 21:32:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yeyu370784 的主题更新
信息提示
请填处理意见