声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2856|回复: 3

[求助] S函数的多输入问题

[复制链接]
发表于 2006-3-31 11:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
<P>系统提示错误如下,系统有输入,但就是没有赋值给s函数 我改动后,现在有提示:<BR><BR>??? Undefined function or variable 'u1'.</P>
<P>Error in ==&gt; C:\MATLAB6p5\work\sfun_bmfa.m (mdlOutputs)<BR>On line 50  ==&gt; w=u1;</P>
<P>Error in ==&gt; C:\MATLAB6p5\work\sfun_bmfa.m<BR>On line 19  ==&gt;     sys=mdlOutputs(t,x,u,k);<BR><BR><BR><BR>源程序如下:<BR><BR>function [sys,x0,str,ts] = sfun_bmfa(t,x,u,flag,k)<BR>global pos;<BR>global w;<BR>%<BR>%<BR>%<BR>switch flag,<BR>  case 0,<BR>    [sys,x0,str,ts]=mdlInitializeSizes;<BR>  case 1,  <BR>    sys=mdlDerivatives(t,x,u);<BR>  case 2,  <BR>    sys=mdlUpdate(t,x,u);<BR>  case 3,  <BR>    sys=mdlOutputs(t,x,u,k);<BR>  case 9,    <BR>    sys=mdlTerminate(t,x,u);<BR>  otherwise  <BR>    error(['Unhandled flag = ',num2str(flag)]);<BR>end</P>
<P>% ------ mdlInitializeSizes ------------------------<BR>function [sys,x0,str,ts]=mdlInitializeSizes(angzzy)<BR>sizes = simsizes;   <BR>sizes.NumContStates  = 0;<BR>sizes.NumDiscStates  = 0;<BR>sizes.NumOutputs     = 1;<BR>sizes.NumInputs      = 2; <BR>sizes.DirFeedthrough = 1;<BR>sizes.NumSampleTimes = 1; <BR>sys = simsizes(sizes);<BR>x0  = [ ];  <BR>str = [ ];   <BR>ts  = [0, 0];  <BR>% -----mdlDerivatives -----------------------------<BR>function sys=mdlDerivatives(t,x,u)<BR>sys =[ ] ; <BR>% -----mdlUpdate ----------------------------------<BR>function sys=mdlUpdate(t,x,u)<BR>sys = [ ]; <BR>% -----mdlOutputs ---------------------------------<BR>function sys=mdlOutputs(t,x,u,k)<BR>w=u1;<BR>pos=u2;</P>
<P>if u2&lt;=pi/3;<BR>    sys=k*u1;<BR>    <BR>else if u2&lt;=2*pi/3;<BR>        sys=k*u1;<BR>        </P>
<P>    else if u2&lt;=pi;<BR>            sys=k*u1*((-2)*u2/(pi/3)+5);<BR>            <BR>        else if u2&lt;=4*pi/3;<BR>               sys=-k*u1;<BR>               <BR>            else if u2&lt;=5*pi/3;<BR>                   sys=-k*u1;<BR>                    <BR>                else u2&lt;=2*pi;<BR>                    sys=k*u1*(u2/(-pi/6)+9);<BR>                    <BR>                    <BR>                end<BR>            end<BR>        end<BR>    end<BR>end<BR>% -----mdlTerminate -------------------------------<BR>function sys=mdlTerminate(t,x,u)<BR>sys = [ ]; <BR><BR><BR>请高手指点如何修改?<BR><BR><BR>不胜感谢.......<BR></P>
回复
分享到:

使用道具 举报

发表于 2006-4-2 12:47 | 显示全部楼层

回复:(hitwrg)[求助] S函数的多输入问题

<DIV class=quote><B>以下是引用<I>hitwrg</I>在2006-3-31 11:04:48的发言:</B><BR>
<P><BR>function sys=mdlOutputs(t,x,u,k)<BR>w=u1;<BR>pos=u2;</P>
<P>if u2&lt;=pi/3;<BR>    sys=k*u1;<BR>    <BR>else if u2&lt;=2*pi/3;<BR>        sys=k*u1;<BR>        </P>
<P>    else if u2&lt;=pi;<BR>            sys=k*u1*((-2)*u2/(pi/3)+5);<BR>            <BR>        else if u2&lt;=4*pi/3;<BR>               sys=-k*u1;<BR>               <BR>            else if u2&lt;=5*pi/3;<BR>                   sys=-k*u1;<BR>                    <BR>                else u2&lt;=2*pi;<BR>                    sys=k*u1*(u2/(-pi/6)+9);<BR>                    <BR>                    <BR>                end<BR>            end<BR>        end<BR>    end<BR>end<BR>% -----mdlTerminate -------------------------------<BR>function sys=mdlTerminate(t,x,u)<BR>sys = [ ]; <BR><BR><BR></P></DIV>
<P>你这里的u1 u2<BR>是哪来的?</P>
发表于 2006-4-2 16:25 | 显示全部楼层

用S function builder很快就能搞定!

在builder里面添加输入输出参数就ok了!我用的非常多,很方便!
 楼主| 发表于 2006-4-3 15:09 | 显示全部楼层

回复:(Jackilin)用S function builder很快就能搞定...

<BR><BR><BR><BR>已搞ding<BR>多谢大家关注<BR><BR><BR><BR>
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-23 22:56 , Processed in 0.048658 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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