24小时热门版块排行榜    

查看: 2358  |  回复: 0

ww_plasma

铁虫 (初入文坛)

[求助] simulink里S函数的封装问题

我要用simulink做一个读写器的系统级仿真,其中有一个PIE编码模块需要用S函数编写然后封装。S函数的程序是书上的,应该没什么大问题,但是一仿真就出现‘X0 returned by M-File S-function 'PIEcoder' in 'fmoma/S-Function1' must be a vector of length 0.’和‘Error evaluating parameter 'p' in 'fmoma/S-Function': Undefined function or variable 'p'.’的错误,这是怎么回事啊?下面是S函数程序

function[sys,x0,str,ts]=PIEcoder(t,x,u,flag)        
switch flag,                                                 %判断仿真状态
    case 0,[sys,x0,str,ts]=mdlInitializeSizes;         %初始化
    case 3,sys=mdlOutputs(t,x,u);                         %计算输出
    case 1,sys=[];                                       %导数计算
    case 2,sys=mdlUpdate(t,x,u);                          %更新离散状态
    case 4,sys=mdlGetTimeOfNextVarHit(t,x,u);             %计算下一个采样时刻
    case 9,sys=[];                                            %仿真结束
    otherwise error(['Unhandlede flag=',num2str(flag)]);  %错误处理
end
function[sys,x0,str,ts]=mdlInitializeSizes()              %定义基本属性
sizes=simsizes;                                                     %返回空的SIZE结构
size.NumContStates =0;                                      %连续状态数目
size.NumDiscStates =1000;                                 %离散状态数目
size.NumOutputs    =-1;                                      %输出端口数目
size.NumInputs     =-1;                                        %输入端口数目
size.DirFeedthrough=1;                                       %是否直通
size.NumSampleTimes=1;                                    %采样周期数目
sys=simsizes(sizes);
str=[];
x0=zeros(1,1000);
x0(1)=0;
x0(2)=0;
x0(3)=5;
x0(4)=5;
ts=[0.00001 0];
function sys=mdlOutputs(t,x,u)                       %计算连续状态变量的导数
switch x(1),
    case 0   %SOF
         switch x(2),
            case 0, sys=-1;
            case 1, sys=+1;     
            case 2, sys=-1;
            case 3, sys=+1;
            case 4, sys=+1;
            case 5, sys=+1;
            case 6, sys=+1;
            case 7, sys=+1;
             otherwise
                 error(['初始化输出错误'])
         end
        
case 1
     switch x(2),
         case 0, sys=-1;
         case 1, sys=+1;
         otherwise
              error(['符号0输出错误']);
     end
case 2
     switch x(2),
         case 0, sys=-1;
         case 1, sys=+1;     
         case 2, sys=+1;
         case 3, sys=+1;
         otherwise
              error(['符号1输出错误']);
     end
case 3   
     switch x(2),
         case 0, sys=-1;
         case 1, sys=+1;     
         case 2, sys=+1;
         case 3, sys=+1;
         case 4, sys=+1;
         case 5, sys=+1;
         case 6, sys=+1;
         case 7, sys=+1;
         otherwise
           error(['结束输出错误']);
     end
otherwise
     error(['状态判定错误']);
end
function sys=mdlUpdate(t,x,u)            %更新离散状态变量、采样时间和最大步长
if t>0.00031
     n=x(3);
sys(3)=x(3);
sys(4)=x(4);
sys(1)=x(1);
m=5:1:1000;
   sys(m)=x(m);
   if rem(t*10,0.0002)==0
       sys(3)=x(3)+1;
       sys(n)=u;
   end
switch x(1),
    case 0, sys(2)=mod(x(2)+1,8);
    case 1, sys(2)=mod(x(2)+1,2);
    case 2, sys(2)=mod(x(2)+1,4);
    case 3, sys(2)=mod(x(2)+1,8);
    otherwise
         error(['状态更新错误']);
end
end
if sys(2)==0;
     if t<0.19988
          switch x(x(4)),
              case 0, sys(1)=1;
              case 1, sys(1)=2;
          end
         x(x(4));
         sys(4)=x(4)+1;
     else
         sys(1)=3;
     end
     else
         m=1:1000;
         sys(m)=x(m);
end

系统模型在附件里
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : fmoma.mdl.autosave
  • 2012-10-09 23:28:13, 30.89 K

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ww_plasma 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 1uaZt2kAZj2S 2026-10-30 14/700 2026-11-01 07:01 by YXM1FDCSE8Bn
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 1uaZt2kAZj2S 2026-10-30 16/800 2026-11-01 07:01 by YXM1FDCSE8Bn
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 1uaZt2kAZj2S 2026-10-30 15/750 2026-11-01 06:53 by YXM1FDCSE8Bn
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 X5bHxOULxFqb 2026-10-30 17/850 2026-11-01 06:48 by YXM1FDCSE8Bn
[基金申请] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 X5bHxOULxFqb 2026-10-30 21/1050 2026-11-01 06:46 by YXM1FDCSE8Bn
[考博] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +4 X5bHxOULxFqb 2026-10-30 21/1050 2026-11-01 06:46 by YXM1FDCSE8Bn
[考研] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 xvJS1BYDxvBS 2026-10-31 8/400 2026-11-01 05:48 by YXM1FDCSE8Bn
[基金申请] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 xvJS1BYDxvBS 2026-10-31 8/400 2026-11-01 05:48 by YXM1FDCSE8Bn
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 xvJS1BYDxvBS 2026-10-31 8/400 2026-11-01 05:43 by YXM1FDCSE8Bn
[找工作] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 1uaZt2kAZj2S 2026-10-31 6/300 2026-11-01 05:41 by YXM1FDCSE8Bn
[考研] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 1uaZt2kAZj2S 2026-10-31 7/350 2026-11-01 04:04 by YXM1FDCSE8Bn
[找工作] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 1uaZt2kAZj2S 2026-10-31 6/300 2026-11-01 03:56 by YXM1FDCSE8Bn
[博后之家] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 1uaZt2kAZj2S 2026-10-31 6/300 2026-11-01 03:56 by YXM1FDCSE8Bn
[论文投稿] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +4 X5bHxOULxFqb 2026-10-30 25/1250 2026-11-01 03:30 by YXM1FDCSE8Bn
[考博] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 1uaZt2kAZj2S 2026-10-31 5/250 2026-11-01 02:25 by YXM1FDCSE8Bn
[考研] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 1uaZt2kAZj2S 2026-10-30 12/600 2026-11-01 02:19 by YXM1FDCSE8Bn
[教师之家] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 X5bHxOULxFqb 2026-10-30 13/650 2026-10-31 17:12 by hKe7U1kad5Sg
[硕博家园] 越来越担心硕士毕业后没有竞争力了 +8 zuesli 2026-10-27 14/700 2026-10-30 22:44 by 好运连连公主
[文学芳草园] 闲聊 +3 myrtle 2026-10-25 6/300 2026-10-29 15:28 by myrtle
[考博] 申博求助 20+3 Katrinae 2026-10-26 4/200 2026-10-27 09:56 by 北京莱茵编辑
信息提示
请填处理意见