重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

MATLAB Simulink の Stateflow について質問させていただきます。
Stateflowを使おうと思いいろいろ調べていてわかったこととして、
 ・StateflowはSimulinkブロックの中の一種
 ・状態分岐をフローチャートのような形で書ける
ということがありました。

しかし、そこで疑問があります。条件分岐はSimulinkでもifブロックとそれに付随するActionブロックを(複雑に)組み合わせれば実現は可能です。
その複雑な部分をStateflowで置き換えると見た目がすっきりし、構造がわかりやすいというのはよいのですが、だとするとそこでifブロックを使う意味はなんなのでしょうか?
「こういう場面はifブロック、こういう場面はStateflow」のような使い方の切り分けは存在するのでしょうか?
見た目にわかりやすいモデルをStateflowもうまく利用して作っていきたいのですが、作っているうちに上記2つの使い分けがよくわからなくなってきかけたので質問させていただきました。
(ifブロックとStateflowの使い分けの定義がよくわからないモデルになりそうな気配があったため。モデルには統一性を持たせたいです)

どなたか詳しい方ご教授いただけるとありがたいです。
以上、よろしくお願いします。

A 回答 (1件)

StateFlowは、有限状態機械(FSM)を記述するのに特化しています。


FSMをifブロックで書くことは可能でしょうが、あんまり適してないでしょう。

そうですね。私のイメージとしては、
ifブロックは、例えばボールが地面でバウンドする様子をシミュレーションするときなど、ボールの高さが0になった瞬間に微分方程式を切り替えるときなど、なんというかシステムの物理現象それ自体に、非連続な要素が入っている場合に使う。

一方で、StateFlowは、ある条件を満たしたら、コントローラのモードを切り替えるみたいに、人やコントローラなんかが、系の状態や系を支配する法則を、あらかじめ決められたアルゴリズムにしたがって、意志をもって能動的に切り替える、という場合に使う。

という使い分けがいいと思います。
    • good
    • 0
この回答へのお礼

わかりやすい回答ありがとうございます。
参考にさせていただきます。

お礼日時:2009/11/07 01:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!