找回密码
 注册
Simdroid-非首页
查看: 90|回复: 5

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

[复制链接]
发表于 2009-7-8 18:52:18 | 显示全部楼层 |阅读模式 来自 湖北武汉
功能就是对脉冲量计数
function [sys,x0,str,ts] = 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函数的理解肯定有问题 不起作用啊
先谢过了
发表于 2009-7-8 23:07:49 | 显示全部楼层 来自 陕西宝鸡
Simdroid开发平台
% 看来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;

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-9 09:09:52 | 显示全部楼层 来自 湖北武汉
我试试  先谢了
回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-9 12:14:14 | 显示全部楼层 来自 湖北武汉
试过了好象不行哦  只变成一就没累加了
回复 不支持

使用道具 举报

发表于 2009-7-9 13:01:32 | 显示全部楼层 来自 陕西宝鸡
不会吧,刚刚拿方波做了试验,可以啊~
lz的脉冲是什么形式的?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2013-3-20 15:24:10 | 显示全部楼层 来自 湖北武汉
请问大侠,一般的m函数怎么嵌套到simulink里面啊?
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-30 06:08 , Processed in 0.062246 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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