mickeyhao66 发表于 2009-7-8 18:52:18

麻烦高手帮忙看看这段s函数的问题(对脉冲量计数)

功能就是对脉冲量计数
function = sfun_count_inpulse(t,x,u,flag)
//定义几个全局变量 记录前次状态和脉冲数
global num
global pre_state
num=0;
pre_state=0;

function sys=mdlUpdate(t,x,u)
global pre_state
global num
if (u == pre_state)   
    num=num;
else
    num=num+1;
end
pre_state=u;
sys = [];

function sys=mdlOutputs(t,x,u)
global num
sys = num;

主要是对上面几个函数做了修改

思路就是将上次状态(1还是0)与本次比较 不同则脉冲数num加一
组后输出num

多谢大家帮我看看   对s函数的理解肯定有问题 不起作用啊
先谢过了

kokyo52 发表于 2009-7-8 23:07:49

% 看来lz不需要s函数
% 下面写个一般的m函数即可满足要求了
% lz嵌套到simulink里面,设定采样时间就可以用了
% 主要是注意要有初始化这一环节
% 另外,在运行前,别忘了 clear all
% 我这台电脑没有Matlab,无法验证,lz看看就这个意思,领会精神呵呵
function Out = count_inpulse(In)
% input is the state

global num;
global pre_state;
if isempty(num)
% init
num = 0;
pre_state = 0;
end

if pre_state ~= In
num = num + 1;
end
pre_state = In;
Out = num;

mickeyhao66 发表于 2009-7-9 09:09:52

我试试先谢了

mickeyhao66 发表于 2009-7-9 12:14:14

试过了好象不行哦只变成一就没累加了

kokyo52 发表于 2009-7-9 13:01:32

不会吧,刚刚拿方波做了试验,可以啊~
lz的脉冲是什么形式的?

neca 发表于 2013-3-20 15:24:10

请问大侠,一般的m函数怎么嵌套到simulink里面啊?
页: [1]
查看完整版本: 麻烦高手帮忙看看这段s函数的问题(对脉冲量计数)