主要内容

转换MATLAB代码Stateflow流程图

为了转换MATLAB®代码Stateflow®流程图和图形函数,使用模式向导。金宝app支持的转换模式包括:

  • 如果if - else,以及其他嵌套的决策语句。

  • 循环。

  • 开关语句。

模式向导可以转换MATLAB函数和脚本。

  • MATLAB函数转换为statflow图形函数。

  • MATLAB脚本转换为statflow流程图。

转换MATLAB代码只支持在独立的状态流程图。金宝app有关更多信息,请参见创建用于执行的状态流图作为MATLAB对象

从下面创建流程图MATLAB脚本

这个MATLAB脚本经验地验证了Collatz猜想的一个实例。当给定数字输入时u,该脚本计算冰雹序列n0un1n2n3.,⋯通过迭代该规则:

  • 如果n是偶数,那么n我+ 1n/2

  • 如果n是奇数,那么n我+ 1= 3n+ 1

Collatz猜想指出,每个正整数都有一个最终达到1的冰雹序列。

%冰雹序列u, c(u), c(c(u)),…y = (u);Y (end) ~= 1 Y (end+1) = c(end);结束disp (y);函数n = c (n)按冰雹顺序计算下一个数字。%如果n是偶数,则c(n) = n/2。%如果n是奇数,则c(n) = 3*n+1。如果Rem (n,2) == 0 n = n/2;其他的n = 3 * n + 1;结束结束
脚本执行重复调用辅助函数的循环c直到它的输出值为1。这个函数c由条件如果-其他的语句,其输出取决于输入的奇偶性。

将此脚本转换为流程图和图形函数:

  1. 打开一个新的独立图表。

    编辑hailstone.sfx
  2. 状态图选项卡上,选择模式>选择文件

  3. 在对话框中选择MATLAB脚本,单击开放.模式向导将流程图和图形函数添加到状态流程图中。双击图形函数以查看其内容。

  4. 在“符号”窗格中,单击解决未定义的符号.状态流编辑器解析uy作为本地数据。

  5. 保存您的图表。

  6. 要从状态流编辑器执行图表,请在“符号”窗格中输入值u= 9并点击运行.当流程图执行时,statflow Editor通过图表动画突出显示活动转换。当执行停止时,MATLAB命令窗口显示冰雹序列,从值9开始:

    9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2
  7. 点击停止

您可以复制生成的流程图和图形函数,并将它们粘贴到其他图表中,包括Simulink中的状态流程图金宝app®模型。如果您的MATLAB代码使用了在Simulink中代码生成受到限制的功能,那么您必须在模拟图表之前修改流程图动作。金宝app有关更多信息,请参见在状态流图中调用MATLAB外部函数

请注意

假设你使用输入参数个数在MATLAB函数中,您可以将其转换为图表中的图形函数。因为输入参数个数将图表对象计数为图形函数的输入参数之一,值为输入参数个数在图形函数中等于1加上的值输入参数个数在原始MATLAB函数中。有关更多信息,请参见执行独立图表

相关的话题