www.gusucode.com > MATLAB仿真技术与应用__的配套例题和习题的matlab源代码 > 第三章/example3.m
%matlab program 3-3 function [sys,x0,str,ts] = timestwo(t,x,u,flag) %TIMESTWO S-function whose output is two times its input. % This M-file illustrates how to construct an M-file S-function that % computes an output value based upon its input. The output of this % S-function is two times the input value: % % y = 2 * u; % % See sfuntmpl.m for a general S-function template. % % See also SFUNTMPL. % Copyright 1990-2001 The MathWorks, Inc. % $Revision: 1.6 $ % % Dispatch the flag. The switch function controls the calls to % S-function routines at each simulation stage of the S-function. % switch flag, %%%%%%%%%%%%%%%%%% % Initialization % %%%%%%%%%%%%%%%%%% % Initialize the states, sample times, and state ordering strings. case 0 [sys,x0,str,ts]=mdlInitializeSizes; %%%%%%%%%%% % Outputs % %%%%%%%%%%% % Return the outputs of the S-function block. case 3 sys=mdlOutputs(t,x,u); %%%%%%%%%%%%%%%%%%% % Unhandled flags % %%%%%%%%%%%%%%%%%%% % There are no termination tasks (flag=9) to be handled. % Also, there are no continuous or discrete states, % so flags 1,2, and 4 are not used, so return an emptyu % matrix case { 1, 2, 4, 9 } sys=[]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Unexpected flags (error handling)% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Return an error message for unhandled flag values. otherwise error(['Unhandled flag = ',num2str(flag)]); end % end timestwo % %============================================================================= % mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================================= % function [sys,x0,str,ts] = mdlInitializeSizes() sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 0; sizes.NumOutputs = -1; % dynamically sized sizes.NumInputs = -1; % dynamically sized sizes.DirFeedthrough = 1; % has direct feedthrough sizes.NumSampleTimes = 1; sys = simsizes(sizes); str = []; x0 = []; ts = [-1 0]; % inherited sample time % end mdlInitializeSizes % %============================================================================= % mdlOutputs % Return the output vector for the S-function %============================================================================= % function sys = mdlOutputs(t,x,u) sys = u * 2; % end mdlOutputs