数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 3854|回复: 5

[推荐]MATLAB 学习问题集锦

[复制链接]
发表于 2004-6-13 06:54:22 | 显示全部楼层 |阅读模式
<><FONT face=隶书 size=4>
<TABLE width="100%" bgColor=#00ffff border=0>

<TR>
<TD width="100%">
< align=center><FONT face=隶书 size=4>1. MATLAB 6 为什么安装上不能启动?</FONT></P></TD></TR></TABLE></P>
<>【解答】经常有网友问这个问题,其实在 Windows 98 或其第 2 版下安装 MATLAB 6 应该没有问题,而在 Windows ME 或 Windows 2000 下安装 MATLAB 6不能启动的主要原因是它的部分中文字库和操作系统的字库重名造成冲突,下面给出可能是最好的解决方法 (并在此向找到并公布此方法的网友表示感谢):</P>
<UL>
<LI>1) 下载 <a href="http://matlab_world.myetang.com/progs/matlabfont.zip" target="_blank" >matlabfont.zip 文件 (9.20KB)</A>
<LI>2) 将解压后的文件覆盖
C:\matlab\sys\java\jre\win32\jre\lib
中的原文件  
<LI>3) 打开matlab6,然后设置字体, 及采用下面的菜单直接设定
Preferences-&gt;General-&gt;Font&amp;Colors-&gt;Desktop font
则可以任意设置命令窗口字体。如果不改当然也能以较好的方式显示。</LI></UL></FONT>
 楼主| 发表于 2004-6-13 06:54:42 | 显示全部楼层
<TABLE width="100%" bgColor=#00ffff border=0><TR><TD width="100%">< align=center><FONT face=隶书 size=4>2. 在哪里可以获得帮助信息?</FONT></P></TD></TR></TABLE><>  当然欢迎你来 <a href="http://matlab.netsh.net/" target="_blank" >MATLAB 语言与应用论坛</A> 来对你遇到的困难提出问题,站长也将尽自己的努力帮助解答,其他有经验的网友也会给你建议,但是在这里还是建议用户自己去查些手册:</P><>  【你知道吗?】 MATLAB 本身和几乎所有的工具箱都有免费可以下载的手册。可以为 PDF 版的,可以为 HTML 的。其中前者打印后和 MathWorks 正版用户得到的书籍是完全一致的。

   在早期版本中,包括 MATLAB 5.3.1, 在安装光盘的help\pdfdoc目录下就有这些PDF版的文件,你用一个免费的Acrobat Reader软件就能阅读和打印(顺便说一下,Acrobat Reader已经出了5.0版)。在MATLAB 6下,好多解密版都没有附带PDF3文件,这样你就可以从The MathWorks公司的官方网站 <a href="http://www.mathworks.com/" target="_blank" >http://www.mathworks.com</A> 上下载所有的PDF和HTML文件了。

  为了方便国内的用户下载该类文件,我在 <a href="http://www.matlab-world.com/index.htm" target="_blank" >MATLAB 大观园</A> 下设置了 <a href="http://matlab_docs.myetang.com/" target="_blank" >本地下载</A> 的链接。

  如果你的英文还说得过去,我建议你们直接阅读原文的手册,而不是去阅读国内的一些不负责任的书籍,因为很多书籍是从手册生硬地翻译的。另外,在这里推荐一些较好的中文著作:</P><UL><LI>薛定宇编著,<a href="http://www.matlab-world.com/my_books.htm#mat5porgs" target="_blank" >科学运算语言 MATLAB 5.3 程序设计与应用</A>,清华大学出版社,2000 (我自信本书是介绍 MATLAB 编程的众多书籍中最好的书之一,里面有作者多年的经验和第一手材料) <LI>张志涌,精通 MATLAB 5.3, 北航出版社,2000 (里面有很多作者自己独特的内容) <LI>在控制系统计算机辅助设计领域,我推荐我自己的 <a href="http://www.matlab-world.com/my_books.htm#fdbctrl" target="_blank" >反馈控制系统设计与分析</A>,清华大学出版社2000 </LI></UL><P>  <FONT color=#ff0000>【注意】</FONT>我的这些文件放在ETANG下,该网站最好用 <a href="http://www.matlab-world.com/xdy_home_new/progs/dap43.zip" target="_blank" >Download Accelerator Plus</A> (1.12MB) 软件下载,安装后可以用它下载etang下的文件了。好像该软件在etang上下载特效</P>
 楼主| 发表于 2004-6-13 06:55:37 | 显示全部楼层
<TABLE width="100%" bgColor=#00ffff border=0><TR><TD width="100%">< align=center><FONT face=隶书 size=4>3. S-Function 使用及应用举例</FONT></P></TD></TR></TABLE><>【说明】近来在论坛中很多朋友问及 Simulink 下的 S-函数的编写及使用方法,在西安交大 BBS 上,<a href="mailthi_yzf@chinaren.com" target="_blank" >hii_yzf</A> 网友发表了有关S-函数使用的文章,举例比较详尽,相信对关心 S-函数的网友会有很大帮助。</P><>发信人: hii_yzf (叶子), 信区: MathTools
标  题: S-FUNCTIONS的书写之一
发信站: 交通大学思源BBS站 (Mon Apr 16 16:35:09 2001) , 站内信件 <P align=center><B>S-FUNCTIONS的书写之一</B> <P>s-function也就是system-function的缩写。说得简单,s-function就是用MATLAB所提供的模型不能完全满足用户,而提供给用户自己编写程序来满足自己要求模型的接口。要了解 s-function,必须了解以下知识:
(1)direct feedthrough
(2)dynamically sized inputs
(3)setting sample times and offsets
[由于我也不知道怎么把上面三句话精确的翻译成中文,因此在此不加翻译,大家自己理解,也许更好]由于上面三部分的重要性,在此详细进行分析。 <P>一.direct feedthrough
direct feedthrough意思是说系统的输出或可变采样时间是否受到输入的控制。大家清楚有的系统是受到输入控制如:
y=k*u (u是输入,k是放大因子,y是输出)
而有的系统输出是不受到输入影响,如:
输出:y=x
dx=u
x表示状态 <P>二.dynamically sized inputs
主要是给出:输入连续状态数目(size.NumContStates),离散状态数目(size.NumDiscStates)
,输出数目(size.NumOutputs),输入数目(size.NumInputs),Direct Feedthrough(size.Dir Feedthrough)。
三.setting sample times and offsets  

setting smaple times and offsets主要设置采样时间 MATLAB为了用户方便,已经书写了S-FUNCTIONS模板函数sfuntmpl.m。为了更好的写S-FUNCTIONS,大家来看一下,该函数sfuntmpl.m内容如下:(我通过在该内容加注释来说明,以$开头) <P>function [sys,x0,str,ts] = sfuntmpl(t,x,u,flag)
$输出变量就此四个,大家必须注意它的顺序。$输入变量可以为t,x,u,flag,p1,...,pn等,但是前面的四个变量不能变,特此说明。 <P>%SFUNTMPL General M-file S-function template
%   With M-file S-functions, you can define you own ordinary differential
%   equations (ODEs), discrete system equations, and/or just about
%   any type of algorithm to be used within a Simulink block diagram.
%
$上面是其功能
%   The general form of an M-File S-function syntax is:
%       [SYS,X0,STR,TS] = SFUNC(T,X,U,FLAG,P1,...,Pn)
%
$调用格式
%   What is returned by SFUNC at a given point in time, T, depends on the
%   value of the FLAG, the current state vector, X, and the current
%   input vector, U.
%
%   FLAG   RESULT             DESCRIPTION
%   -----  ------             --------------------------------------------
%   0      [SIZES,X0,STR,TS]  Initialization, return system sizes in SYS,
%                             initial state in X0, state ordering strings
%                             in STR, and sample times in TS.
$具体怎样实现,大家参看后面的函数mdlInitializeSizes
%   1      DX                 Return continuous state derivatives in SYS.
%   2      DS                 Update discrete states SYS = X(n+1)
%   3      Y                  Return outputs in SYS.
%   4      TNEXT              Return next time hit for variable step sample
%                             time in SYS.
%   5                         Reserved for future (root finding).
%   9      []                 Termination, perform any cleanup SYS=[].
%
$参看后面相应函数
%
%   The state vectors, X and X0 consists of continuous states followed
%   by discrete states.
%
%   Optional parameters, P1,...,Pn can be provided to the S-function and
%   used during any FLAG operation.
%
%   When SFUNC is called with FLAG = 0, the following information
%   should be returned:
%
%      SYS(1) = Number of continuous states.
%      SYS(2) = Number of discrete states.
%      SYS(3) = Number of outputs.
%      SYS(4) = Number of inputs.
%               Any of the first four elements in SYS can be specified
%               as -1 indicating that they are dynamically sized. The
%               actual length for all other flags will be equal to the
%               length of the input, U.
%      SYS(5) = Reserved for root finding. Must be zero.
%      SYS(6) = Direct feedthrough flag (1=yes, 0=no). The s-function
%               has direct feedthrough if U is used during the FLAG=3
%               call. Setting this to 0 is akin to making a promise that
%               U will not be used during FLAG=3. If you break the promise
%               then unpredictable results will occur.
%      SYS(7) = Number of sample times. This is the number of rows in TS.
%
$需要说明的是sys的顺序不能乱
%
%      X0     = Initial state conditions or [] if no states.
%
%      STR    = State ordering strings which is generally specified as [].
%
%      TS     = An m-by-2 matrix containing the sample time
%               (period, offset) information. Where m = number of sample
%               times. The ordering of the sample times must be:
%
%               TS = [0      0,      : Continuous sample time.
%                     0      1,      : Continuous, but fixed in minor step
%                                      sample time.
%                     PERIOD OFFSET, : Discrete sample time where
%                                      PERIOD &gt; 0 &amp; OFFSET 〈 PERIOD.
%                     -2     0];     : Variable step discrete sample time
%                                      where FLAG=4 is used to get time of
%                                      next hit.
%
%               There can be more than one sample time providing
%               they are ordered such that they are monotonically
%               increasing. Only the needed sample times should be
%               specified in TS. When specifying than one
%               sample time, you must check for sample hits explicitly by
%               seeing if
%                  abs(round((T-OFFSET)/PERIOD) - (T-OFFSET)/PERIOD)
%               is within a specified tolerance, generally 1e-8. This
%               tolerance is dependent upon your model's sampling times
%               and simulation time.
%
%               You can also specify that the sample time of the S-function
%               is inherited from the driving block. For functions which
%               change during minor steps, this is done by
%               specifying SYS(7) = 1 and TS = [-1 0]. For functions which
%               are held during minor steps, this is done by specifying
%               SYS(7) = 1 and TS = [-1 -1]. <P>%   Copyright (c) 1990-1998 by The MathWorks, Inc. All Rights Reserved.
%   $Revision: 1.12 $ <P>%
% The following outlines the general structure of an S-function.
%
switch flag,  
  %%%%%%%%%%%%%%%%%%
  % Initialization %
  %%%%%%%%%%%%%%%%%%
  case 0,[sys,x0,str,ts]=mdlInitializeSizes;
$大家是不是觉得此函数名太长,当然可以根据自己的爱好加以改变,不过后面的相应改。
  %%%%%%%%%%%%%%%
  % Derivatives %
  %%%%%%%%%%%%%%%
  case 1,sys=mdlDerivatives(t,x,u);
  %%%%%%%%%%
  % Update %
  %%%%%%%%%%
  case 2,sys=mdlUpdate(t,x,u);
  %%%%%%%%%%%
  % Outputs %
  %%%%%%%%%%%
  case 3,sys=mdlOutputs(t,x,u);
  %%%%%%%%%%%%%%%%%%%%%%%
  % GetTimeOfNextVarHit %
  %%%%%%%%%%%%%%%%%%%%%%%
  case 4,sys=mdlGetTimeOfNextVarHit(t,x,u);
  %%%%%%%%%%%%%
  % Terminate %
  %%%%%%%%%%%%%
  case 9,sys=mdlTerminate(t,x,u);
  %%%%%%%%%%%%%%%%%%%%
  % Unexpected flags %
  %%%%%%%%%%%%%%%%%%%%
  otherwise, error(['Unhandled flag = ',num2str(flag)]);
end
% end sfuntmpl <P>%
%=============================================================================
% mdlInitializeSizes
% Return the sizes, initial conditions, and sample times for the S-function.
%=============================================================================
%
function [sys,x0,str,ts]=mdlInitializeSizes
%
% 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.
%
$关于函数simsizes大家必须遵循,因为把是内部函数,不得随便改变,其作用是返回未初始化的size结构。
sizes = simsizes;
$number of continuous states
sizes.NumContStates  = 0;
$number of discrete states
sizes.NumDiscStates  = 0;
$number of outputs
sizes.NumOutputs     = 0;
$ number of inputs
sizes.NumInputs      = 0;
$Flag for direct feedthrough
sizes.DirFeedthrough = 1;
$number of sample times
sizes.NumSampleTimes = 1;   
% at least one sample time is needed
$
sys = simsizes(sizes);
%
% initialize the initial conditions
%
x0  = [];
%
% str is always an empty matrix
%
str = [];
%
% initialize the array of sample times
%
ts  = [0 0];
% end mdlInitializeSizes
%
%=============================================================================
% mdlDerivatives
% Return the derivatives for the continuous states.
%=============================================================================
%
function sys=mdlDerivatives(t,x,u)
sys = []; % 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)
sys = [];  % 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 </P>
 楼主| 发表于 2004-6-13 06:55:55 | 显示全部楼层
<>在下面我将写几个具体的实例。</P>< align=center><B>之二、连续系统例子:</B></P><>function [sys,x0,str,ts] = csfunc(t,x,u,flag)
%CSFUNC An example M-file S-function for defining a continuous system.  
%   Example M-file S-function implementing continuous equations:
%      x' = Ax + Bu
%      y  = Cx + Du
%   
%   See sfuntmpl.m for a general S-function template.
%
%   See also SFUNTMPL.
  
%   Copyright (c) 1990-1998 by The MathWorks, Inc. All Rights Reserved.
%   $Revision: 1.5 $
A=[-0.09   -0.01;   1          0];
B=[ 1   -7;   0   -2];
C=[ 0    2;   1   -5];
D=[-3    0;   1    0];
switch flag,
  %%%%%%%%%%%%%%%%%%
  % Initialization %
  %%%%%%%%%%%%%%%%%%
  case 0,[sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D);
  %%%%%%%%%%%%%%%
  % Derivatives %
  %%%%%%%%%%%%%%%
  case 1,sys=mdlDerivatives(t,x,u,A,B,C,D);
  %%%%%%%%%%%
  % Outputs %
  %%%%%%%%%%%
  case 3,sys=mdlOutputs(t,x,u,A,B,C,D);
  %%%%%%%%%%%%%%%%%%%
  % Unhandled flags %
  %%%%%%%%%%%%%%%%%%%
  case { 2, 4, 9 },sys = [];
  %%%%%%%%%%%%%%%%%%%%
  % Unexpected flags %
  %%%%%%%%%%%%%%%%%%%%
  otherwise, error(['Unhandled flag = ',num2str(flag)]);
end
% end csfunc
%
%=============================================================================
% mdlInitializeSizes
% Return the sizes, initial conditions, and sample times for the S-function.
%=============================================================================
%
function [sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D)
sizes = simsizes;
sizes.NumContStates  = 2;  sizes.NumDiscStates  = 0;  sizes.NumOutputs     = 2;
sizes.NumInputs      = 2;  sizes.DirFeedthrough = 1;  sizes.NumSampleTimes = 1;
sys = simsizes(sizes);  x0  = zeros(2,1);  str = [];  ts  = [0 0];
% 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
%
%=============================================================================
% mdlOutputs
% Return the block outputs.
%=============================================================================
%
function sys=mdlOutputs(t,x,u,A,B,C,D)
sys = C*x + D*u; % end mdlOutputs</P><P align=center><B>之三、有关离散系统</B></P><P>关于离散系统定义的书写在此举一例:  <P align=left>function [sys,x0,str,ts] = dsfunc(t,x,u,flag)
%DSFUNC An example M-file S-function for defining a discrete system.
% Example M-file S-function implementing discrete equations:
% x(n+1) = Ax(n) + Bu(n)
% y(n) = Cx(n) + Du(n)
%
% See sfuntmpl.m for a general S-function template.
%
% See also SFUNTMPL. % Copyright (c) 1990-1998 by The MathWorks, Inc. All Rights Reserved.
% $Revision: 1.13 $
% Generate a discrete linear system:
A=[-1.3839 -0.5097 1.0000 0]; B=[-2.5559 0 0 4.2382];
C=[ 0 2.0761 0 7.7891]; D=[ -0.8141 -2.9334 1.2426 0];
switch flag,
% Initialization
case 0,[sys,x0,str,ts] = mdlInitializeSizes(A,B,C,D);
% Update % %%%%%%%%%%
case 2, sys = mdlUpdate(t,x,u,A,B,C,D); %%%%%%%%%%
% Output % %%%%%%%%%%
case 3, sys = mdlOutputs(t,x,u,A,C,D); %%%%%%%%%%%%%
% Terminate % %%%%%%%%%%%%%
case 9, sys = []; % do nothing %%%%%%%%%%%%%%%%%%%%
% Unexpected flags % %%%%%%%%%%%%%%%%%%%%
otherwise, error(['unhandled flag = ',num2str(flag)]);
end %end dsfunc
%
%=======================================================================
% mdlInitializeSizes
% Return the sizes, initial conditions, and sample times for the S-function.
%=======================================================================
%
function [sys,x0,str,ts] = mdlInitializeSizes(A,B,C,D)
sizes = simsizes;
sizes.NumContStates = 0; sizes.NumDiscStates = size(A,1); sizes.NumOutputs = size(D,1);
sizes.NumInputs = size(D,2); sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1;
sys = simsizes(sizes); x0 = ones(sizes.NumDiscStates,1); str = []; ts = [1 0];
% end mdlInitializeSizes
%
%=======================================================================
% mdlUpdate
% Handle discrete state updates, sample time hits, and major time step
% requirements.
%=======================================================================
% function sys = mdlUpdate(t,x,u,A,B,C,D)
sys = A*x+B*u; %end mdlUpdate
%
%=======================================================================
% mdlOutputs
% Return Return the output vector for the S-function
%=======================================================================
%
function sys = mdlOutputs(t,x,u,A,C,D)
sys = C*x+D*u; %end mdlUpdate</P>
 楼主| 发表于 2004-6-13 06:56:15 | 显示全部楼层
S-FUNCTIONS的书写之四(离散和连续的混合型)  <>  <>function [sys,x0,str,ts] = mixedm(t,x,u,flag)  
%MIXEDM An example integrator followed by unit delay M-file S-function  
% Example M-file S-function implementing a hybrid system consisting  
% of a continuous integrator (1/s) in series with a unit delay (1/z).  
% Sampling period and offset for unit delay.  
dperiod = 1; doffset = 0;  
switch flag  
%%%%%%%%%%%%%%%%%%  
% Initialization %  
%%%%%%%%%%%%%%%%%%  
case 0, [sys,x0,str,ts]=mdlInitializeSizes(dperiod,doffset);  
%%%%%%%%%%%%%%%  
% Derivatives %  
%%%%%%%%%%%%%%%  
case 1, sys=mdlDerivatives(t,x,u);  
%%%%%%%%%%  
% Update %  
%%%%%%%%%%  
case 2, sys=mdlUpdate(t,x,u,dperiod,doffset);  
%%%%%%%%%%  
% Output %  
%%%%%%%%%%  
case 3, sys=mdlOutputs(t,x,u,doffset,dperiod);  
%%%%%%%%%%%%%  
% Terminate %  
%%%%%%%%%%%%%  
case 9, sys = [];  
% do nothing  
otherwise, error(['unhandled flag = ',num2str(flag)]);  
end % end mixedm %  
%=============================================================================  
% mdlInitializeSizes  
% Return the sizes, initial conditions, and sample times for the S-function.  
%=============================================================================  
%  
function [sys,x0,str,ts]=mdlInitializeSizes(dperiod,doffset)  
sizes = simsizes; sizes.NumContStates = 1; sizes.NumDiscStates = 1;  
sizes.NumOutputs = 1; sizes.NumInputs = 1; sizes.DirFeedthrough = 0;  
sizes.NumSampleTimes = 2; sys = simsizes(sizes); x0 = ones(2,1); str = [];  
ts = [0 0; % sample time  
      dperiod doffset];  
% end mdlInitializeSizes  
%  
%=============================================================================  
% mdlDerivatives % Compute derivatives for continuous states.  
%=============================================================================  
%  
function sys=mdlDerivatives(t,x,u)  
sys = u; % end mdlDerivatives  
%  
%=============================================================================  
% mdlUpdate  
% Handle discrete state updates, sample time hits, and major time step % requirements.  
%=============================================================================  
%  
function sys=mdlUpdate(t,x,u,dperiod,doffset)  
% next discrete state is output of the integrator  
if abs(round((t - doffset)/dperiod) - (t - doffset)/dperiod) &lt; 1e-8, sys = x(1);  
else sys = []; end % end mdlUpdate  
%  
%=============================================================================  
% mdlOutputs % Return the output vector for the S-function  
%=============================================================================  
%  
function sys=mdlOutputs(t,x,u,doffset,dperiod)  
% Return output of the unit delay if we have a  
% sample hit within a tolerance of 1e-8. If we  
% don't have a sample hit then return [] indicating  
% that the output shouldn't change.  
if abs(round((t - doffset)/dperiod) - (t - doffset)/dperiod) &lt; 1e-8, sys = x(2); else sys = []; end % end mdlOutputs 关于这些程序的说明,我将在后面讲解。 < align=center><B>S-Function书写之五</B> <P>在本帖中我对前面列举的关于系统是连续,离散,连续与离散混合的三个例子加以说明,以至于大家在看下面的例子时能更好的理解。  <P>一.函数mdlInitializeSizes  <P>对于描述连续型的函数csfunc.m  <P>sizes.NumContStates = 2; sizes.NumDiscStates = 0;  <P>$表明本函数是描述连续型的  <P>sizes.NumOutputs = 2; sizes.NumInputs = 2;  
sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1;  <P>对于描述离散型的函数dsfunc.m  <P>sizes.NumContStates = 0; sizes.NumDiscStates = size(A,1);  <P>$表明本函数是描述离散型的  <P>sizes.NumOutputs = size(D,1); sizes.NumInputs = size(D,2);   
sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1;  <P>对于描述混合型的函数mixedm.m  <P>sizes.NumContStates = 1; sizes.NumDiscStates = 1;  <P>$表明本函数是描述混合型的  <P>sizes.NumOutputs = 1; sizes.NumInputs = 1;   
sizes.DirFeedthrough = 0; sizes.NumSampleTimes = 2;  <P>关于变量sizes.numoutputs和sizes.numinputs则由描述的系统的输出,输入而定。   
关于变量sizes.DirFeedthrough,则可以查看矩阵D,如果D是非空,则为1,否则为0   
关于变量sizes.NumSampleTimes,即是ts这个矩阵的行数。  <P>二.函数mdlDerivatives  <P>仅仅出现在含有连续型的系统中;这部分应该根据系统状态来决定。  <P>三.函数mdlUpdate 仅仅出现在含有离散型的系统中;该函数应该根据系统状态来决定  <P>四.函数mdlOutputs 该函数在各种类型中都有,应该根据描述系统的输出来决定;  <P>五.关于书写s-functions函数的注意之点  <P>(1)我想大家都会觉得上述三个函数都不利于维护,因此在写s-functions函数时不妨把矩阵 A,B,C,D也考虑成变量,作为输入参数;   
(2)关于在csfuncs.m中的型如case(2,4,9)这种形式,大家最好不要采用,不利于维护,可以分 开来写   
(3)关于结构sizes中的各个变量的值,最好从输入参量中得到,而不是通过人为判断来输入   
(4)因此,其实上述三种形式,可以变化成一种形式.   
(5)可以通过对相应于你所要求的系统对上述三个函数加以相应的改进来到达自己的要求,因此可以把上述函数当成模板函数.  <P>今天写到这儿,有什么问题可以提出来,大家讨论! 在接下来,我将写几个例子,来进一步说明!</P>
发表于 2004-6-15 00:49:03 | 显示全部楼层
宝宝辛苦了,这些可都是有用的东东,
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-27 10:36 , Processed in 0.056532 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表