欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    自适应模糊神经网络MATLAB代码.doc

    • 资源ID:98009473       资源大小:24KB        全文页数:5页
    • 资源格式: DOC        下载积分:3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    自适应模糊神经网络MATLAB代码.doc

    function c, sigma , W_output = SOFNN( X, d, Kd )%SOFNN Self-Organizing Fuzzy Neural Networks%Input Parameters% X(r,n) - rth traning data from nth observation% d(n) - the desired output of the network (must be a row vector)% Kd(r) - predefined distance threshold for the rth input%Output Parameters% c(IndexInputVariable,IndexNeuron)% sigma(IndexInputVariable,IndexNeuron)% W_output is a vector%Setting up Parameters for SOFNNSigmaZero=4;delta=0.12;threshold=0.1354;k_sigma=1.12;%For more accurate results uncomment the following%format long;%Implementation of a SOFNN modelsize_R,size_N=size(X);%size_R - the number of input variablesc=; sigma=; W_output=;u=0; % the number of neurons in the structureQ=;O=;Psi=;for n=1:size_N    x=X(:,n);        if u=0 % No neuron in the structure?        c=x;        sigma=SigmaZero*ones(size_R,1);        u=1;        Psi=GetMePsi(X,c,sigma);        Q,O = UpdateStructure(X,Psi,d);        pT_n=GetMeGreatPsi(x,Psi(n,:)'            else        Q,O,pT_n = UpdateStructureRecursively(X,Psi,Q,O,d,n);    end;    KeepSpinning=true;    while KeepSpinning        %Calculate the error and if-part criteria        ae=abs(d(n)-pT_n*O); %approximation error        phi,=GetMePhi(x,c,sigma);        maxphi,maxindex=max(phi); % maxindex refers to the neuron's index        if ae>delta            if maxphi<threshold                %enlarge width                minsigma,minindex=min(sigma(:,maxindex);                sigma(minindex,maxindex)=k_sigma*minsigma;                Psi=GetMePsi(X,c,sigma);                Q,O = UpdateStructure(X,Psi,d);                pT_n=GetMeGreatPsi(x,Psi(n,:)'                                           else                %Add a new neuron and update structure                ctemp=;                sigmatemp=;                dist=0;                for r=1:size_R                    dist=abs(x(r)-c(r,1);                    distIndex=1;                    for j=2:u                        if abs(x(r)-c(r,j)<dist                            distIndex=j;                            dist=abs(x(r)-c(r,j);                        end;                    end;                    if dist<=Kd(r)                        ctemp=ctemp; c(r,distIndex);                        sigmatemp=sigmatemp ; sigma(r,distIndex);                    else                        ctemp=ctemp; x(r);                        sigmatemp=sigmatemp ; dist;                    end;                end;                c=c ctemp;                sigma=sigma sigmatemp;                Psi=GetMePsi(X,c,sigma);                Q,O = UpdateStructure(X,Psi,d);                KeepSpinning=false;                u=u+1;            end;        else            if maxphi<threshold                %enlarge width                minsigma,minindex=min(sigma(:,maxindex);                sigma(minindex,maxindex)=k_sigma*minsigma;                Psi=GetMePsi(X,c,sigma);                Q,O = UpdateStructure(X,Psi,d);                pT_n=GetMeGreatPsi(x,Psi(n,:)'                            else                %Do nothing and exit the while                KeepSpinning=false;                            end;        end;            end;end;W_output=O;endfunction Q_next, O_next,pT_n = UpdateStructureRecursively(X,Psi,Q,O,d,n)%O=O(t-1) O_next=O(t)p_n=GetMeGreatPsi(X(:,n),Psi(n,:);pT_n=p_n'ee=abs(d(n)-pT_n*O); %|e(t)|temp=1+pT_n*Q*p_n;ae=abs(ee/temp);if ee>=ae    L=Q*p_n*(temp)(-1);    Q_next=(eye(length(Q)-L*pT_n)*Q;    O_next=O + L*ee;else    Q_next=eye(length(Q)*Q;    O_next=O;end;endfunction Q , O = UpdateStructure(X,Psi,d)GreatPsiBig = GetMeGreatPsi(X,Psi);%M=u*(r+1)%n - the number of observationsM,=size(GreatPsiBig);%Others Ways of getting Q=PT(t)*P(t)-1%*%opts.SYM = true;%Q = linsolve(GreatPsiBig*GreatPsiBig',eye(M),opts);%Q = inv(GreatPsiBig*GreatPsiBig');%Q = pinv(GreatPsiBig*GreatPsiBig');%*Y=GreatPsiBigeye(M);Q=GreatPsiBig'Y;O=Q*GreatPsiBig*d'end%This function works too with x% (X=X and Psi is a Matrix) - Gets you the whole GreatPsi% (X=x and Psi is the row related to x) - Gets you just the column related with the observationfunction GreatPsi = GetMeGreatPsi(X,Psi)%Psi - In a row you go through the neurons and in a column you go through number of%observations * Psi(#obs,IndexNeuron) *GreatPsi=;N,U=size(Psi);for n=1:N    x=X(:,n);    GreatPsiCol=;    for u=1:U        GreatPsiCol= GreatPsiCol ; Psi(n,u)*1; x ;    end;    GreatPsi=GreatPsi GreatPsiCol;end;endfunction phi, SumPhi=GetMePhi(x,c,sigma)r,u=size(c);%u - the number of neurons in the structure%r - the number of input variablesphi=;SumPhi=0;for j=1:u % moving through the neurons    S=0;    for i=1:r % moving through the input variables        S = S + (x(i) - c(i,j)2) / (2*sigma(i,j)2);    end;        phi = phi exp(-S);            SumPhi = SumPhi + phi(j);   %phi(u)=exp(-S)end;end%This function works too with x, it will give you the row related to xfunction Psi = GetMePsi(X,c,sigma),u=size(c);,size_N=size(X);%u - the number of neurons in the structure%size_N - the number of observationsPsi=;for n=1:size_N            phi, SumPhi=GetMePhi(X(:,n),c,sigma);        PsiTemp=;    for j=1:u        %PsiTemp is a row vector ex: 1 2 3        PsiTemp(j)=phi(j)/SumPhi;    end;    Psi=Psi; PsiTemp;        %Psi - In a row you go through the neurons and in a column you go through number of    %observations * Psi(#obs,IndexNeuron) *end;end(范文素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)

    注意事项

    本文(自适应模糊神经网络MATLAB代码.doc)为本站会员(胜****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开