自适应模糊神经网络MATLAB代码文档格式.docx
- 文档编号:8263875
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:5
- 大小:15.64KB
自适应模糊神经网络MATLAB代码文档格式.docx
《自适应模糊神经网络MATLAB代码文档格式.docx》由会员分享,可在线阅读,更多相关《自适应模糊神经网络MATLAB代码文档格式.docx(5页珍藏版)》请在冰点文库上搜索。
%ImplementationofaSOFNNmodel
[size_R,size_N]=size(X);
%size_R-thenumberofinputvariables
c=[];
sigma=[];
W_output=[];
u=0;
%thenumberofneuronsinthestructure
Q=[];
O=[];
Psi=[];
forn=1:
size_N
x=X(:
n);
ifu==0%Noneuroninthestructure?
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;
whileKeepSpinning
%Calculatetheerrorandif-partcriteria
ae=abs(d(n)-pT_n*O);
%approximationerror
[phi,~]=GetMePhi(x,c,sigma);
[maxphi,maxindex]=max(phi);
%maxindexreferstotheneuron'
sindex
ifae>
delta
ifmaxphi<
threshold
%enlargewidth
[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
%Addanewneuronandupdatestructure
ctemp=[];
sigmatemp=[];
dist=0;
forr=1:
size_R
dist=abs(x(r)-c(r,1));
distIndex=1;
forj=2:
u
ifabs(x(r)-c(r,j))<
dist
distIndex=j;
dist=abs(x(r)-c(r,j));
end;
ifdist<
=Kd(r)
ctemp=[ctemp;
c(r,distIndex)];
sigmatemp=[sigmatemp;
sigma(r,distIndex)];
x(r)];
dist];
c=[cctemp];
sigma=[sigmasigmatemp];
KeepSpinning=false;
u=u+1;
%Donothingandexitthewhile
W_output=O;
end
function[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);
ifee>
=ae
L=Q*p_n*(temp)^(-1);
Q_next=(eye(length(Q))-L*pT_n)*Q;
O_next=O+L*ee;
Q_next=eye(length(Q))*Q;
O_next=O;
function[Q,O]=UpdateStructure(X,Psi,d)
GreatPsiBig=GetMeGreatPsi(X,Psi);
%M=u*(r+1)
%n-thenumberofobservations
[M,~]=size(GreatPsiBig);
%OthersWaysofgettingQ=[P^T(t)*P(t)]^-1
%**************************************************************************
%opts.SYM=true;
%Q=linsolve(GreatPsiBig*GreatPsiBig'
eye(M),opts);
%
%Q=inv(GreatPsiBig*GreatPsiBig'
);
%Q=pinv(GreatPsiBig*GreatPsiBig'
Y=GreatPsiBig\eye(M);
Q=GreatPsiBig'
\Y;
O=Q*GreatPsiBig*d'
%Thisfunctionworkstoowithx
%(X=XandPsiisaMatrix)-GetsyouthewholeGreatPsi
%(X=xandPsiistherowrelatedtox)-Getsyoujustthecolumnrelatedwiththeobservation
function[GreatPsi]=GetMeGreatPsi(X,Psi)
%Psi-Inarowyougothroughtheneuronsandinacolumnyougothroughnumberof
%observations****Psi(#obs,IndexNeuron)****
GreatPsi=[];
[N,U]=size(Psi);
N
GreatPsiCol=[];
foru=1:
U
GreatPsiCol=[GreatPsiCol;
Psi(n,u)*[1;
x]];
GreatPsi=[GreatPsiGreatPsiCol];
function[phi,SumPhi]=GetMePhi(x,c,sigma)
[r,u]=size(c);
%u-thenumberofneuronsinthestructure
%r-thenumberofinputvariables
phi=[];
SumPhi=0;
forj=1:
u%movingthroughtheneurons
S=0;
fori=1:
r%movingthroughtheinputvariables
S=S+((x(i)-c(i,j))^2)/(2*sigma(i,j)^2);
phi=[phiexp(-S)];
SumPhi=SumPhi+phi(j);
%phi(u)=exp(-S)
%Thisfunctionworkstoowithx,itwillgiveyoutherowrelatedtox
function[Psi]=GetMePsi(X,c,sigma)
[~,u]=size(c);
[~,size_N]=size(X);
%size_N-thenumberofobservations
size_N
[phi,SumPhi]=GetMePhi(X(:
n),c,sigma);
PsiTemp=[];
forj=1:
%PsiTempisarowvectorex:
[123]
PsiTemp(j)=phi(j)/SumPhi;
Psi=[Psi;
PsiTemp];
%Psi-Inarowyougothroughtheneuronsandinacolumnyougothroughnumberof
%observations****Psi(#obs,IndexNeuron)****
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自适应 模糊 神经网络 MATLAB 代码