行列ベクトルの入力データをstateflowに読み込ませる方法
Afficher commentaires plus anciens
シリアル通信でデータサイズ[1 24](int16)のデータをstateflowを用いて条件分岐したいのですが、行列またはベクトルが不適切に使用されているというエラーが出てしまいます。
その後、プロパティインスペクターで入出力データのサイズと型を[1 24](int16)に設定して再度実行しましたが、データサイズの不一致というエラーが出てしまいます。
stateflowに行列データを読み込む時は一旦スカラーに変換しなければならないのでしょうか。
何か解決策等教えていただければ幸いです。
Réponse acceptée
Plus de réponses (2)
kazuya h
le 31 Mai 2022
0 votes
2 commentaires
Toshinobu Shintai
le 31 Mai 2022
Modifié(e) : Toshinobu Shintai
le 31 Mai 2022
Stateflowの状態遷移をベクトル化する意味は、どのようにお考えでしょうか。
通常、Stateflowのチャート内に存在するステートブロックは、ある一つの状態を表現しています。そのため、その状態が遷移するということは、一つの "遷移するしないのフラグ" = "スカラーのboolean値" があればよいです。
この遷移フラグがベクトルである、ということは、そのステートをベクトル化(インスタンス化)したいということでしょうか。そのような表現はStateflowではできません。Stateflowでなくても、そのような表現は可視化が難しくなるかと思います。
少しモデルが大きくなりますが、要素ごとに状態遷移を適用するようにする方が見やすく、またその方法がSimulinkとStateflowで可能になる手段になります。
添付ファイルをご確認ください。
Toshinobu Shintai
le 31 Mai 2022
すみません、追記ですが、「For Each Subsystem」を使うともう少し効率よくモデル化できます。Test_model_2.slxの「state_vector」サブシステムをFor Eachにすることで、ブロックを沢山並べなくてもモデル化できます。
kazuya h
le 31 Mai 2022
0 votes
Catégories
En savoir plus sur Simulink Function dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!