- 积分
- 84
- 回帖
- 0
- 西莫币
-
- 贡献
-
- 威望
-
- 存款
-
- 阅读权限
- 5
- 最后登录
- 1970-1-1
该用户从未签到
|
楼主 |
发表于 2011-12-3 14:07
|
显示全部楼层
来自: 中国上海
模型
报错
回复 6# han_han
现在编了输入一个RBF-PID模型仿真时,出现以下报错,不知道你是否遇到过,该怎么解决!代码,
function [sys,x0,str,ts] =nnrbf_pid(t,x,u,flag,T,nn, K_pid,eta_pid,xite,alfa,beta0,w0)
switch flag,
case 0 ,[sys,x0,str,ts]=mdlInitializeSizes(T,nn);
case 2 ,sys=mdlUpdates(u);
case 3 ,sys=mdlOutputs(t,x,u,T,nn,K_pid,eta_pid,xite,alfa ,beta0,w0);
case {l,4,9},sys= [ ];
otherwise,error(['Unhandled flag= ',num2str(flag)]);
end
function [sys,x0,str,ts] =mdlInitializeSizes(T,nn)
sizes = simsizes;sizes.NumContStates = 0;sizes.NumDiscStates = 3;
sizes.NumOutputs = 4+5*nn;sizes.NumInputs=9+15*nn;
sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 1;
sys =simsizes(sizes);x0=zeros(3,1);str =[ ];ts =[T 0];
function sys=mdlUpdates(u)
sys =[u(1)-u(2);u(1);u(1)+u(3)-2*u(2)];
function sys=mdlOutputs(t,x,u,T,nn,K_pid,eta_pid, xite,alfa,beta0,w0)
ci_3 =reshape(u(7:6+3*nn),3 ,nn);ci_2=reshape(u(7+5*nn:6+8*nn),3,nn);
ci_1 =reshape(u(7+10*nn:6+13*nn),3,nn);
bi_3=u(7+3*nn:6+4*nn);bi_2=u(7+8*nn:6+9*nn);
bi_1 =u(7+13*nn:6+14*nn);w_3=u(7+4*nn:6+5*nn);
w_2=u(7+9*nn:6+10*nn);w_1=u(7+14*nn:6+15*nn);xx=u([6;4;5]);
if t==0
ci_1=w0(1)*ones(3,nn);bi_1=w0(2)*ones(nn,1);
w_1=w0(3)*ones(nn,1);K_pid0=K_pid;
else,K_pid0=u(end-2:end);
end
for j=1:nn
h(j,1)=exp(-norm(xx-ci_1(:,j))^2/(2*bi_1(j)*bi_1(j)));
end
dym=u(4)-w_1'*h;w=w_1+xite*dym*h+alfa*(w_1-w_2)+beta0*( w_2-w_3);
for j =1:nn
d_bi(j,1)=xite*dym*w_l(j)*h(j)*(bi_1(j)^(-3))*norm(xx-ci_1(:,j))^2;
d_ci(:,j) =xite*dym*w_1(j)*h(j)*(xx-ci_l(:,j))*(bi_1(j)^(-2));
end
bi=bi_1+d_bi+alfa*(bi_1-bi_2 )+beta0*(bi_2-bi_3);
ci=ci_1+d_ci+alfa*(ci_1-ci_2 )+beta0*(ci_2-ci_3);
dJac =sum(w.*h.*(-xx(1)+ci(1,:)')./bi.^2);
KK =K_pid0+u(1)*dJac*eta_pid.*x;sys=[u(6)+KK'*x;KK;ci(:);bi(:);w(:)]; |
|