据我所知,stateflow和simulink经常同时使用,都是Matlab开发的MathWorks开发的环境。我可以知道它们之间有什么区别吗?
6 回答
Simulink 在很大程度上是一个面向控制的解决方案。它以图形方式描述了数学,如乘积、总和、积分等。但是,它缺乏条件逻辑工具。在我看来,任何一种if
构造都会很快变得简洁和难以管理。我见过很多模型,这里有一条明确的界限,Simulink 应该在哪里结束,Stateflow 应该在哪里开始。
Stateflow 非常好地处理逻辑,当然还有状态机。现在,通过在 Stateflow 中添加 Simulink Function 模块,我们有了一个强大的组合,可以让 Stateflow 中的状态机指导程序的其余部分。
就功能而言,它们在功能上都是完整的,这意味着您可以在 C 中编码的任何内容,您都可以在 Simulink 或 Stateflow 中编码。但是,我不建议在 Stateflow 中编写 PID 循环,但这是可能的。您也可以在 Simulink 中轻松创建状态机,但我不建议这样做。
至于代码生成;在融合之初,Stateflow 和 Simulink 有单独的代码生成器,它们与更多 Simulink 在代码生成时生成的 C 代码缝合在一起。然后是 CGIR(代码生成中介表示),它统一了 Stateflow 和 Simulink 之间的代码生成器。它出现在 2007 年左右,并继续显着提高性能。生成的代码在目标性能方面已提高到公司可以在其嵌入式系统中使用代码并实际获得性能优势的程度而不是小受打击。此外,生成代码的时间也大大减少。CGIR 是目标语言编译器的替代品,但是,不要担心,TLC API 仍然可用,对于那些开发了大量专有代码生成库的人来说可能永远可用。
希望这会有所帮助,让我知道是否有什么听起来可疑或者我需要澄清一下。
Simulink 用于响应动态变化的连续变化。Stateflow 用于响应动态变化的瞬时变化。现实世界的系统必须同时响应连续和瞬时的变化。同时使用 Simulink 和 Stateflow,以便您可以使用正确的工具来完成正确的工作。示例:汽车的悬架动力学使用 Simulink 建模,而齿轮传动系统使用 Stateflow 建模。
了解更多关于 Stateflow 的一般信息:http: //www.mathworks.com/products/stateflow/examples.html
Stateflow 已更新,可以非常轻松地在 R2012b 中创建状态机和流程图。
主要更新包括新的图形编辑器、状态转换表、作为动作语言的 MATLAB 和集成调试器。查找这些功能的简短视频以及如何使用它们:
http://www.mathworks.com/products/stateflow/whatsnew.html
最好的,悉达多
我目前还参与了 simulink 和 stateflow。到目前为止,我在 Simulink 中完成了所有工作,但是一旦您必须实现逻辑(如果、案例),您的模型在编码后就变得难以在视觉上进行分析。但我认为理论上你也可以在 Simulink 中做所有事情(如果我错了,请纠正我)。
macduff 的回答很好地解释了这些差异。
问候, GR
我在 simulink 和状态流环境上都工作过,它们都是 Matlab 工具。当你当时想设计一个反应式系统或事件驱动系统时,我们应该更喜欢 stateflow 而不是 simulink。因为与 simulink 相比,我们可以更好地控制 stateflow 中的事件。虽然 simulink 中的调试很容易,但 stateflow 中的可读性和代码生成很容易。
复杂状态机:Stateflow
复杂数学过程:Simulink 块
其他:Stateflow 和 Simulink 都可以