📄 dt1bpdtnet.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 + -