[已解决] Simulink中如何输出两个信号交点的时刻

[复制链接]
白马石老李 发表于 2021-4-7 20:33:07
本帖最后由 白马石老李 于 2021-4-7 20:39 编辑

sin函数与0.5相交时,触发标记计为1,否则计为0. 搭建simulink模型
fcn函数如下:

  1. function j = fcn(k,x)
  2. if x==k
  3.     j=1;
  4. else
  5.     j=0;
  6. end
复制代码


仿真结果如图,可以看到并没有输出sin与0.5相交的时刻,请问大家这种情况应如何进行仿真?




仿真结果

仿真结果

simulink模型

simulink模型

untitled.slx

23.53 KB, 下载次数: 1

最佳答案


TouAkira 发表于 2021-4-8 01:12:14
采样精度导致你自定义函数中的严格相等条件没法满足,参考《 关于数组逻辑运算的一个疑问
改成
  1. function j = fcn(k,x)
  2. Tolerance = 1e-1; % 自己根据需要设置这个容许误差的精度
  3. if abs( x - k ) <= Tolerance
  4.     j = 1;
  5. else
  6.     j = 0;
  7. end
  8. end
复制代码
回复此楼

2 条回复


TouAkira 发表于 2021-4-8 01:12:14
采样精度导致你自定义函数中的严格相等条件没法满足,参考《 关于数组逻辑运算的一个疑问
改成
  1. function j = fcn(k,x)
  2. Tolerance = 1e-1; % 自己根据需要设置这个容许误差的精度
  3. if abs( x - k ) <= Tolerance
  4.     j = 1;
  5. else
  6.     j = 0;
  7. end
  8. end
复制代码
回复此楼

白马石老李 发表于 2021-4-8 08:59:42
TouAkira 发表于 2021-4-8 01:12
采样精度导致你自定义函数中的严格相等条件没法满足,参考《 关于数组逻辑运算的一个疑问 》
改成
...

非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表