为了转换MATLAB®代码Stateflow®流程图和图形函数,使用模式向导。金宝app支持的转换模式包括:
如果
,if - else
,以及其他嵌套的决策语句。
为
和而
循环。
开关
语句。
模式向导可以转换MATLAB函数和脚本。
MATLAB函数转换为statflow图形函数。
MATLAB脚本转换为statflow流程图。
转换MATLAB代码只支持在独立的状态流程图。金宝app有关更多信息,请参见创建用于执行的状态流图作为MATLAB对象.
这个MATLAB脚本经验地验证了Collatz猜想的一个实例。当给定数字输入时u
,该脚本计算冰雹序列n0=u
,n1,n2,n3.,⋯通过迭代该规则:
如果n我是偶数,那么n我+ 1=n我/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
由条件如果
-其他的
语句,其输出取决于输入的奇偶性。
将此脚本转换为流程图和图形函数:
打开一个新的独立图表。
编辑hailstone.sfx
在状态图选项卡上,选择模式>选择文件.
在对话框中选择MATLAB脚本,单击开放.模式向导将流程图和图形函数添加到状态流程图中。双击图形函数以查看其内容。
在“符号”窗格中,单击解决未定义的符号.状态流编辑器解析u
和y
作为本地数据。
保存您的图表。
要从状态流编辑器执行图表,请在“符号”窗格中输入值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
点击停止.
您可以复制生成的流程图和图形函数,并将它们粘贴到其他图表中,包括Simulink中的状态流程图金宝app®模型。如果您的MATLAB代码使用了在Simulink中代码生成受到限制的功能,那么您必须在模拟图表之前修改流程图动作。金宝app有关更多信息,请参见在状态流图中调用MATLAB外部函数.