请教relational operator模块和if模块的问题
simulink吧
全部回复
仅看楼主
level 3
Xianju♬ 楼主
新手小白初学simulink,请教大佬。
想实现一个比较并输出的功能,如图。两个正弦信号输入relational operator模块进行比较,满足条件择走if分支(输出上面的正弦信号),不满足则走else分支(输出下面的正弦信号)。但现在总是报错说“布尔输入信号的关系运算符使用无效”,请问该如何解决?
【已经分别查看了信号,逻辑都没问题;也试过用constant的0或1作为u1的输入条件,可以正常实现功能,所以应该就是relational的输出和if的u1输入这个信号传递出了问题】
2023年08月09日 16点08分 1
level 3
Xianju♬ 楼主
一个奇奇怪怪的解决办法。我刚才又结合帮助文档的案例做了如图的改动,加了个恒定输出1的波形,用这个恒1波形与relational operator的输出相乘后再输入if的u1口,就可以实现功能了。我推测应该是r o输出的数据类型跟if的输入不匹配?请问除了我摸索这个方法,有没有比较规范的/常用的方法呀?请大佬们赐教。
2023年08月09日 18点08分 2
刚才又发现,把相乘的那个恒1波换成值为1的constant也行。求大佬讲解下原理。
2023年08月09日 18点08分
level 11
比较模块输出结果的数据类型默认是布尔。布尔类型一般不能直接和常量进行比较。可以把if模块里面的u1>1修改为u1~=0试试
2023年08月10日 07点08分 4
甚至直接改为u1即可,不需要任何运算
2023年08月10日 07点08分
@子慕予兮、 解决啦,谢谢大佬[太开心]。我可以这样理解嘛,布尔类型的数据虽然信号也用1或0表示,但本质上是一种是或否状态,而不是数值,所以不能接入数值运算模块?
2023年08月10日 08点08分
@Xianju♬ boolean你可以看作true或者fault,不要当做0或1。你定义一个常数boolean量,然后用高版本的生成一下c码,你就发现c码里面这些都是TRUE或者fault了
2023年08月10日 16点08分
@燕双嘤º 嗯嗯,多谢大佬[太开心]
2023年08月11日 07点08分
1