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

📄 dt1bpdtnet.m

📁 对动态一阶对象采用BP神经网络进行建模的源程序,经过调试,直接就可以由MATLAB运行!
💻 M
字号:
function main()
K=1;
T=30;
Ts=2;
num=K;
den=[T,1];
G=tf(num,den)
Gd=c2d(G,Ts)
[numd,dend]=c2dm(num,den,Ts)

alldatanum=1000;
traindatanum=500;
testdatanum=500;

u=rands(1,alldatanum+1);
y=zeros(1,alldatanum+1);
for i=2:alldatanum+1
    y=dlsim(numd,dend,u);
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;
lr=0.0005;
E0=0.0001;

w1=0.1*rands(hiddenunitnum,indim);
b1=0.1*rands(hiddenunitnum,1);
w2=0.1*rands(outdim,hiddenunitnum);
b2=0.1*rands(outdim,1);

w1ex=[w1 b1];
w2ex=[w2 b2];

traindatainex=[traindatain' ones(traindatanum,1)]';
errorhistory=[];
for k=1:maxepochs
    hiddenout=logsig(w1ex*traindatainex);
    hiddenoutex=[hiddenout' ones(traindatanum,1)]';
    networkout=w2ex*hiddenoutex;
    
    error=traindataout-networkout;
    SSE=sumsqr(error)
    
    errorhistory=[errorhistory SSE];
    
    if SSE<E0,break,end
    
    delta2=error;
    delta1=w2'*delta2.*hiddenout.*(1-hiddenout);
    
    dw2ex=delta2*hiddenoutex';
    dw1ex=delta1*traindatainex';
    
    w1ex=w1ex+lr*dw1ex;
    w2ex=w2ex+lr*dw2ex;
    
    w2=w2ex(:,1:hiddenunitnum);
end

k
w1=w1ex(:,1:indim)
b1=w1ex(:,indim+1)
w2=w2ex(:,1:hiddenunitnum)
b2=w2ex(:,1+hiddenunitnum)

testhiddenout=logsig(w1*testdatain+repmat(b1,1,testdatanum));
testnnout=w2*testhiddenout+repmat(b2,1,testdatanum);
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 + -