麻烦高手帮忙看看这段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函数的理解肯定有问题 不起作用啊
先谢过了 % 看来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; 我试试先谢了 试过了好象不行哦只变成一就没累加了 不会吧,刚刚拿方波做了试验,可以啊~
lz的脉冲是什么形式的?
请问大侠,一般的m函数怎么嵌套到simulink里面啊?
页:
[1]