声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1242|回复: 6

应该是很简单的问题,求助大家的帮助,在线等(急)

[复制链接]
发表于 2007-5-12 14:19 | 显示全部楼层 |阅读模式

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

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

x
在simulink里写的s function 运行程序的时候总是出现Input argument 'flag' is undefined.的错误,用matlab自带的demo也是一样,哪位知道的麻烦告诉一下是什么原因,不胜感激!
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-5-12 14:31 | 显示全部楼层
看到的帮个忙啊,实在是急啊
 楼主| 发表于 2007-5-12 15:10 | 显示全部楼层
怎么没人理啊
 楼主| 发表于 2007-5-12 15:46 | 显示全部楼层

把程序贴上来,希望有人能找出问题



[ 本帖最后由 franny4611 于 2007-5-12 15:47 编辑 ]
 楼主| 发表于 2007-5-12 15:46 | 显示全部楼层

把程序贴上来,希望有人能找出问题

function [sys,x0,str,ts]=area_sel(t,x,u,flag)
switch flag,
    case 0,
      [sys,x0,str,ts]= mdlInitializeSizes;
   
    case 2,
        sys=[];
      
    case 3,
        sys=mdlOutputs(t,x,u);
    case 4,
        sys=[];
      
    case 9,
        sys=[];
      
      otherwise
    error(['Unhandled flag = ',num2str(flag)]);
end

function[sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 2;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 1;
sizes.NumInputs      = 2;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;   
sys = simsizes(sizes);
x0  = [];


function sys=mdIOutputs(t,x,u)
if(u(1)>0)
    if(u(2)/u(1)<1/sqrt(3)&&u(2)/u(1)>-1/sqrt(3))
        sys=1;
    end
    if(u(2)/u(1)>1/sqrt(3))
        sys=2;
    end
    if(u(2)/u(1)<-1/sqrt(3))
        sys=6;
    end
end
if(u(1)<0)
    if(u(2)/u(1)<-1/sqrt(3))
        sys=3;
    end
    if(u(2)/u(1)<1/sqrt(3)&&u(2)/u(1)>-1/sqrt(3))
        sys=4;
    end
    if(u(2)/u(1)>1/sqrt(3))
        sys=5;
    end
end
    if(u(1)==0)
        if(u(2)>0)
            sys=3;
        else
            sys=6;
        end
    end
发表于 2007-5-12 16:47 | 显示全部楼层

回复 #5 franny4611 的帖子

你是直接运行这个程序吗?要是那样的话一般都会提示这个错误
发表于 2007-5-12 20:52 | 显示全部楼层
原帖由 franny4611 于 2007-5-12 15:46 发表
function [sys,x0,str,ts]=area_sel(t,x,u,flag)
switch flag,
    case 0,
      [sys,x0,str,ts]= mdlInitializeSizes;
   
    case 2,
        sys=[];
      
    case 3,
        sys=mdlOutpu ...

你这个是S函数的格式,如果直接当成普通M文件运行,永远报这个错的
你要把它用在系统中就不是错误了。
flag的0,1,3等值的不同代表了不同的情况
看下帮助里面的simulink里面的writing S-functions 里面的相关介绍你就明白了哈:)
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-17 11:36 , Processed in 0.065565 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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