
行列ベクトルの入力データをstateflowに読み込ませる方法
35 views (last 30 days)
Show older comments
kazuya h
on 31 May 2022
Commented: Toshinobu Shintai
on 31 May 2022
シリアル通信でデータサイズ[1 24](int16)のデータをstateflowを用いて条件分岐したいのですが、行列またはベクトルが不適切に使用されているというエラーが出てしまいます。
その後、プロパティインスペクターで入出力データのサイズと型を[1 24](int16)に設定して再度実行しましたが、データサイズの不一致というエラーが出てしまいます。
stateflowに行列データを読み込む時は一旦スカラーに変換しなければならないのでしょうか。
何か解決策等教えていただければ幸いです。
0 Comments
Accepted Answer
Toshinobu Shintai
on 31 May 2022
Stateflowの遷移の条件判定式の出力が、スカラーなければならないためにエラーとなります。
例えば以下のようにコードを書いて実行してみると分かりますが、
y = ones(1, 24);
y < 2000
比較演算子"<"は、ベクトルの各数値に対して実行され、出力はベクトルになります。
例えば以下のように判定式がスカラーになるようにすればエラーは発生しなくなると思います。

参考までに、モデルも添付します。R2021aで作成しました。
0 Comments
More Answers (2)
kazuya h
on 31 May 2022
2 Comments
Toshinobu Shintai
on 31 May 2022
すみません、追記ですが、「For Each Subsystem」を使うともう少し効率よくモデル化できます。Test_model_2.slxの「state_vector」サブシステムをFor Eachにすることで、ブロックを沢山並べなくてもモデル化できます。
See Also
Categories
Find more on Simulink Function in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!