コード生成を前提にしたsimulinkモデルで、条件成立時に配列の、あるインデックスが持つ値をインクリメントする方法
11 ビュー (過去 30 日間)
古いコメントを表示
配列 test[3]のそれぞれのデータに対し、ある閾値を超えた場合にデータをインクリメントするモデルの作り方を教えていただけないでしょうか。(2015a)
例えば、以下のようなCソースをモデルで実現することは可能でしょうか。また、一般的にモデルで表現するとどのような作りになるのでしょうか。
if ( val 1> LABELX )
{
test[0]++ ;
}
if ( val 2> LABELY )
{
test[1]++ ;
}
0 件のコメント
採用された回答
Toshinobu Shintai
2020 年 6 月 26 日
Simulinkのブロックで汎化した記述をするのは難しいですね。添付した「my_model.slx」のように、Selectorを使えば書けるのですが、インクリメントする要素を変えると構造を変えなければなりません。
もし社内ルールでMATLAB Functionを使ってもよいのであれば、「my_model_2.slx」のように記述できるので、こちらの方がよいと思います。
Embedded Coderでコード生成した後のコードも添付しています。拡張子が.cのままでは添付できなかったので、.txtにしました。開く際は拡張子を修正してください。
6 件のコメント
Toshinobu Shintai
2020 年 6 月 30 日
「整数オーバーフローで飽和」の件ですが、ドキュメントが分かりにくくて申し訳ありません。改善のためフィードバックさせていただきます。
3行目の処理は、簡単に言えば変数初期化とデータ型定義のためです。
以降の処理でout(3)という記述を行うためには、事前にデータサイズが明確になっていなければなりませんので、最初に代入を記述することで、outがvecと同じデータ型、サイズになります。
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!