据我所知,stateflow和Simulink经常同时使用,这两个环境都是由MathWorks开发的,他们制作了MatLab。我能知道它们之间有什么区别吗?
dzjeubhm1#
Simulink在很大程度上是一个面向控件的解决方案。它图形化地描绘了乘积、和、积分等数学。然而,它的条件逻辑工具不足。在我看来,任何类型的if构造都会很快变得简洁且难以管理。我看过很多模型,这里有一条明确的界线,Simulink应该结束,Stateflow应该开始。Stateflow非常好地处理逻辑,当然还有状态机。现在,通过在Stateflow中添加Simulink功能块,我们有了一个强大的组合,允许Stateflow中的状态机直接执行程序的其余部分。就功能而言,它们在功能上都是完整的,这意味着你可以用C编写任何代码,你可以用Simulink或Stateflow编写代码。但是,我不建议在Stateflow中编写一个PID循环,但这是可能的。您还可以在Simulink中轻松创建状态机,但我建议您不要这么做。至于代码生成;在合并之初,Stateflow和Simulink有单独的代码生成器,这些生成器与更多的Simulink在代码生成时生成的C代码缝合在一起。然后出现了CGIR(代码生成中间表示),它统一了Stateflow和Simulink之间的代码生成器。它出现在2007年左右,并继续带来性能的大幅提升。生成的代码提高了目标性能,以至于公司可以在其嵌入式系统中使用这些代码,并实际获得性能好处,而不是受到小的影响。此外,生成代码的时间也大幅减少。CGIR是目标语言编译器的替代品,然而,不要害怕,TLC API仍然可以使用,对于那些已经开发了大量专有代码生成库的人来说,可能永远是这样。希望这会有帮助,如果有什么听起来可疑或我需要澄清的事情,请让我知道。
if
2w3rbyxf2#
引用a Stateflow Webinar:Simulink用于响应动态变化中的连续变化。Stateflow用于响应动态变化中的瞬时变化。现实世界的系统必须对持续和瞬时的变化做出React。同时使用Simulink和Stateflow,这样您就可以为正确的工作使用正确的工具。例如:汽车的悬架动力学是用SIMULINK建模的,而齿轮传动是用Stateflow建模的。
xzabzqsa3#
有关Stateflow的更多信息,请访问:http://www.mathworks.com/products/stateflow/examples.htmlStateflow已更新,可以非常轻松地在R2012b中创建state machines和流程图。主要的更新包括一个新的图形编辑器,状态转换表,作为动作语言的MATLAB和一个集成的调试器。有关这些功能以及如何使用这些功能的短视频,请访问:http://www.mathworks.com/products/stateflow/whatsnew.html贝斯特,悉达哈斯
q5iwbnjs4#
我目前还参与了Simulink和stateflow。到目前为止,我在Simulink中做了所有的事情,但是一旦你必须实现逻辑(IF,CASE),你的模型在编码后就很难进行视觉上的分析。但我认为从理论上讲,您也可以在Simulink中做任何事情(如果我错了,请纠正我)。麦克达夫的回答很好地解释了这些差异。向您致敬,GR
brjng4g35#
我在Simulink和State Flow环境上都做过工作,都是MatLab工具。当您当时想要设计一个React式系统或事件驱动系统时,我们应该选择Stateflow而不是Simulink。因为与Simulink相比,我们可以更好地控制状态流中的事件。虽然在Simulink中调试很容易,但在状态流中易于阅读和代码生成。
mbskvtky6#
复杂状态机:状态流复杂的数学过程:Simulink块其他:Stateflow和Simulink都很好
izj3ouym7#
Stateflow的另一个主要好处是集成和使用外部C代码。这可以通过在图表设置中选择动作语言C来完成。如通常所知,用户可以在“模拟目标”选项中包括外部代码。虽然普通的Simulink模型需要很小的变通方法来访问外部C代码(Cval()、Simulink、全局参数等),但Stateflow可以直接访问函数、定义等。通过将这些数组编码到外部代码中,也可以避免像总线/结构数组这样的问题。对于许多用例,我喜欢在Stateflow中直接与C代码交互的灵活性。
7条答案
按热度按时间dzjeubhm1#
Simulink在很大程度上是一个面向控件的解决方案。它图形化地描绘了乘积、和、积分等数学。然而,它的条件逻辑工具不足。在我看来,任何类型的
if
构造都会很快变得简洁且难以管理。我看过很多模型,这里有一条明确的界线,Simulink应该结束,Stateflow应该开始。Stateflow非常好地处理逻辑,当然还有状态机。现在,通过在Stateflow中添加Simulink功能块,我们有了一个强大的组合,允许Stateflow中的状态机直接执行程序的其余部分。
就功能而言,它们在功能上都是完整的,这意味着你可以用C编写任何代码,你可以用Simulink或Stateflow编写代码。但是,我不建议在Stateflow中编写一个PID循环,但这是可能的。您还可以在Simulink中轻松创建状态机,但我建议您不要这么做。
至于代码生成;在合并之初,Stateflow和Simulink有单独的代码生成器,这些生成器与更多的Simulink在代码生成时生成的C代码缝合在一起。然后出现了CGIR(代码生成中间表示),它统一了Stateflow和Simulink之间的代码生成器。它出现在2007年左右,并继续带来性能的大幅提升。生成的代码提高了目标性能,以至于公司可以在其嵌入式系统中使用这些代码,并实际获得性能好处,而不是受到小的影响。此外,生成代码的时间也大幅减少。CGIR是目标语言编译器的替代品,然而,不要害怕,TLC API仍然可以使用,对于那些已经开发了大量专有代码生成库的人来说,可能永远是这样。
希望这会有帮助,如果有什么听起来可疑或我需要澄清的事情,请让我知道。
2w3rbyxf2#
引用a Stateflow Webinar:
Simulink用于响应动态变化中的连续变化。Stateflow用于响应动态变化中的瞬时变化。现实世界的系统必须对持续和瞬时的变化做出React。同时使用Simulink和Stateflow,这样您就可以为正确的工作使用正确的工具。例如:汽车的悬架动力学是用SIMULINK建模的,而齿轮传动是用Stateflow建模的。
xzabzqsa3#
有关Stateflow的更多信息,请访问:http://www.mathworks.com/products/stateflow/examples.html
Stateflow已更新,可以非常轻松地在R2012b中创建state machines和流程图。
主要的更新包括一个新的图形编辑器,状态转换表,作为动作语言的MATLAB和一个集成的调试器。有关这些功能以及如何使用这些功能的短视频,请访问:
http://www.mathworks.com/products/stateflow/whatsnew.html
贝斯特,悉达哈斯
q5iwbnjs4#
我目前还参与了Simulink和stateflow。到目前为止,我在Simulink中做了所有的事情,但是一旦你必须实现逻辑(IF,CASE),你的模型在编码后就很难进行视觉上的分析。但我认为从理论上讲,您也可以在Simulink中做任何事情(如果我错了,请纠正我)。
麦克达夫的回答很好地解释了这些差异。
向您致敬,GR
brjng4g35#
我在Simulink和State Flow环境上都做过工作,都是MatLab工具。当您当时想要设计一个React式系统或事件驱动系统时,我们应该选择Stateflow而不是Simulink。因为与Simulink相比,我们可以更好地控制状态流中的事件。虽然在Simulink中调试很容易,但在状态流中易于阅读和代码生成。
mbskvtky6#
复杂状态机:状态流
复杂的数学过程:Simulink块
其他:Stateflow和Simulink都很好
izj3ouym7#
Stateflow的另一个主要好处是集成和使用外部C代码。这可以通过在图表设置中选择动作语言C来完成。如通常所知,用户可以在“模拟目标”选项中包括外部代码。虽然普通的Simulink模型需要很小的变通方法来访问外部C代码(Cval()、Simulink、全局参数等),但Stateflow可以直接访问函数、定义等。通过将这些数组编码到外部代码中,也可以避免像总线/结构数组这样的问题。对于许多用例,我喜欢在Stateflow中直接与C代码交互的灵活性。