matlab求状态方程函数,帮帮忙!用S函数求状态方程

2023-05-16

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

% GetTimeOfNextVarHit %

%%%%%%%%%%%%%%%%%%%%%%%

case 4,

sys=mdlGetTimeOfNextVarHit(t,x,u);

%%%%%%%%%%%%%

% Terminate %

%%%%%%%%%%%%%

case 9,

sys=mdlTerminate(t,x,u);

%%%%%%%%%%%%%%%%%%%%

% Unexpected flags %

%%%%%%%%%%%%%%%%%%%%

otherwise

DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));

end

% end sfuntmpl

%

%=============================================================================

% mdlInitializeSizes

% Return the sizes, initial conditions, and sample times for the S-function.

%=============================================================================

%

function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes(A,B,C,D)

%

% call simsizes for a sizes structure, fill it in and convert it to a

% sizes array.

%

% Note that in this example, the values are hard coded.   This is not a

% recommended practice as the characteristics of the block are typically

% defined by the S-function parameters.

%

sizes = simsizes;

sizes.NumContStates   = 2;

sizes.NumDiscStates   = 0;

sizes.NumOutputs      = 2;

sizes.NumInputs       = 2;

sizes.DirFeedthrough = 1;

sizes.NumSampleTimes = 1;    % at least one sample time is needed

sys = simsizes(sizes);

%

% initialize the initial conditions

%

x=zero(2,1);

%

% str is always an empty matrix

%

str = [];

%

% initialize the array of sample times

%

ts   = [0 0];

% Specify the block simStateComliance. The allowed values are:

%     'UnknownSimState', < The default setting; warn and assume DefaultSimState

%     'DefaultSimState', < Same sim state as a built-in block

%     'HasNoSimState',    < No sim state

%     'DisallowSimState' < Error out when saving or restoring the model sim state

simStateCompliance = 'UnknownSimState';

% end mdlInitializeSizes

%

%=============================================================================

% mdlDerivatives

% Return the derivatives for the continuous states.

%=============================================================================

%

function sys=mdlDerivatives(t,x,u,A,B,C,D)

sys =A*x+B*u;

% end mdlDerivatives

%

%=============================================================================

% mdlUpdate

% Handle discrete state updates, sample time hits, and major time step

% requirements.

%=============================================================================

%

function sys=mdlUpdate(t,x,u)

sys = [];

% end mdlUpdate

%

%=============================================================================

% mdlOutputs

% Return the block outputs.

%=============================================================================

%

function sys=mdlOutputs(t,x,u,A,B,C,D)

sys =C*x+D*u;

% end mdlOutputs

%

%=============================================================================

% mdlGetTimeOfNextVarHit

% Return the time of the next hit for this block.   Note that the result is

% absolute time.   Note that this function is only used when you specify a

% variable discrete-time sample time [-2 0] in the sample time array in

% mdlInitializeSizes.

%=============================================================================

%

function sys=mdlGetTimeOfNextVarHit(t,x,u)

sampleTime = 1;     %   Example, set the next hit to be one second later.

sys = t + sampleTime;

% end mdlGetTimeOfNextVarHit

%

%=============================================================================

% mdlTerminate

% Perform any end of simulation tasks.

%=============================================================================

%

function sys=mdlTerminate(t,x,u)

sys = [];

% end mdlTerminate

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab求状态方程函数,帮帮忙!用S函数求状态方程 的相关文章

随机推荐