| 查看: 1593 | 回复: 0 | ||
[求助]
simulink s 函数仿真求助
|
|
%Single Neural Net PID Decouple Controller based on Hebb Learning %Algorithm to adjust kp,ki,kd function [sys,x0,str,ts]=sn_pidf(t,x,u,flag) switch flag, case 0 % initializations [sys,x0,str,ts] = mdlInitializeSizes; case 2 % discrete states updates sys = mdlUpdates(x,u); case 3 % computation of control signal sys=mdlOutputs(t,x,u); case {1, 4, 9} % unused flag values sys = []; otherwise % error handling error(['Unhandled flag = ',num2str(flag)]); end; %============================================================== % when flag=0, perform system initialization %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes sizes = simsizes; % read default control variables 定义一个结构体 sizes.NumContStates = 0; % no continuous states sizes.NumDiscStates = 3; % 3 states and assume they are the P/I/D components sizes.NumOutputs = 1; % 2 output variables: control u(t) and state x(3) sizes.NumInputs = 4; % 4 input signals sizes.DirFeedthrough = 1;% input reflected directly in output sizes.NumSampleTimes = 1;% single sampling period sys = simsizes(sizes); % 返回size数据结构所包含信息 x0 = [0; 0; 0]; % zero initial states str = []; ts = [-1 0]; % sampling period %============================================================== % when flag=2, updates the discrete states %============================================================== function sys = mdlUpdates(x,u) % T=1; sys=[ x(1)+1.2*u(1)*u(4)*u(1); x(2)+8.2*u(1)*u(4)*u(2); x(3)+0.2*u(1)*u(4)*u(3)]; % sys=[x(1);x(2);x(3);u(1)]; %============================================================== % when flag=3, computates the output signals %============================================================== function sys = mdlOutputs(t,x,u) % persistent wkp1_1 wki1_1 wkd1_1 u1_1 % xiteP=0.60; % xiteI=0.60; % xiteD=0.60; % % if t==0 %Initilizing kp,ki and kd % wkp1_1=0.3; % wki1_1=0.3; % wkd1_1=0.3; % u1_1=0; % end % % %Adjusting NNC Weight Value by adopting hebb learning algorithm % wkp1=wkp1_1+xiteP*x(1)*u1_1*x(1); %P 此处x(1)相当于e(k) % wki1=wki1_1+xiteI*x(1)*u1_1*x(2); %I % wkd1=wkd1_1+xiteD*x(1)*u1_1*x(3); %D % % wadd1=abs(wkp1)+abs(wki1)+abs(wkd1); %归一化处理 % w111=wkp1/wadd1; % w122=wki1/wadd1; % w133=wkd1/wadd1; % w1=[w111,w122,w133]; % k1=0.20; %非改进神经元PID控制中K值 % u1=k1*w1*x; % % wkp1_1=wkp1; % wkd1_1=wkd1; % wki1_1=wki1; % % u1_1=u1; sys=u(4)+(0.003+0.0002*abs(u(1))+0.075*abs(u(2))*(abs(1))*u(1)+abs(x(2))*u(2)+abs(x(3))*u(3))/(abs(x(1))+abs(x(2))+abs(x(3))); 上程序为一个单神经元PID simulink s函数,为何运行时出现输入参数数目不足,是在mdl中输入设置有关还是?本人刚刚接触simulink,希望大侠们能够详细解释一下,或者能够给一个单神经元PID控制的simulink例程也成,好让我仔细研究一下 |
» 猜你喜欢
科研人应该花精力去思考如何解决问题,而不是去凝练问题
已经有11人回复
要骂人了,新模版改版就是要淡化问题凝练这种虚的东西,结果有个评委还在说凝练得不够
已经有17人回复
基金系统什么内容也没有
已经有10人回复
学科评审组评审是指会评吗?
已经有5人回复
梦想
已经有8人回复
面上合作单位盖章
已经有9人回复
面上函评意见出来了,像什么等级?
已经有17人回复
为什么资助数各大高校都创新高,自己申请怎么就这么难
已经有14人回复
小白求助 投论文要求的highlights应该如何写
已经有4人回复
麻烦专家们看看评委们的意见(F口面上)
已经有12人回复










回复此楼
30