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

📄 dt1rbfnet.m

📁 对动态一阶对象采用rbf神经网络进行建模的源程序,经过调试,直接就可以由MATLAB运行!
💻 M
字号:
function main()
alldatanum=200;
traindatanum=100;
testdatanum=100;

u=rands(1,alldatanum+1);
y=zeros(1,alldatanum+1);
for i=2:alldatanum+1
    y(i)=0.5*u(i-1)-0.2*y(i-1);
end

alldatain=[];
alldataout=[];
for i=2:alldatanum+1
    newin=[u(i-1);y(i-1)];
    alldatain=[alldatain newin];
    alldataout=[alldataout y(i)];
end

traindatain=alldatain(:,1:traindatanum);
traindataout=alldataout(:,1:traindatanum);
testdatain=alldatain(:,traindatanum+1:alldatanum);
testdataout=alldataout(:,traindatanum+1:alldatanum);

figure
hold on
grid
j=traindatanum+1:alldatanum
plot(j,testdatain,'k-')
xlabel('input t');
ylabel('output u');

figure
hold on
grid
j=traindatanum+1:alldatanum
plot(j,testdataout,'b-')
xlabel('input t');
ylabel('output y');

indim=2;
outdim=1;
hiddenunitnum=10;
maxepochs=10000;
E0=0.1;

center=2*rand(indim,hiddenunitnum)-1;
sp=0.2*rand(1,hiddenunitnum)+0.1;
w=0.2*rand(1,hiddenunitnum)-0.1;

lrcent=0.001;
lrsp=0.001;
lrw=0.001;

errorhistory=[];
for epoch=1:maxepochs
    alldist=dist(center',traindatain);
    spmat=repmat(sp',1,traindatanum);
    unitout=radbas(alldist./spmat);
    netout=w*unitout;
    
    error=traindataout-netout;
    SSE=sumsqr(error)
    
    errorhistory=[errorhistory SSE];
    
    if SSE<E0,break,end
    
    for k=1:hiddenunitnum
        centgrad=(traindatain-repmat(center(:,k),1,traindatanum))...
                              *(error.*unitout(k,:)*w(k)/(sp(k)^2))';
        spgrad=alldist(k,:).^2*(error.*unitout(k,:)*w(k)/(sp(k)^3))';
        wgrad=error*unitout(k,:)';
        
        center(:,k)=center(:,k)+lrcent*centgrad;
        sp(k)=sp(k)+lrsp*spgrad;
        w(k)=w(k)+lrw*wgrad;
    end
end

epoch
testdistance=dist(center',testdatain);
testspreadsmat=repmat(sp',1,testdatanum);
testhiddenunitout=radbas(testdistance./testspreadsmat);
testnnout=w*testhiddenunitout;
plot(j,testnnout,'r-')

figure
hold on
grid
[xx,num]=size(errorhistory);
plot(1:num,errorhistory,'r-');

⌨️ 快捷键说明

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