コード生成を前提にしたsimulinkモデルで、条件成立時に配列の、あるインデックスが持つ値をインクリメントする方法
3 views (last 30 days)
Show older comments
徹 矢吹
on 26 Jun 2020
Commented: Toshinobu Shintai
on 30 Jun 2020
配列 test[3]のそれぞれのデータに対し、ある閾値を超えた場合にデータをインクリメントするモデルの作り方を教えていただけないでしょうか。(2015a)
例えば、以下のようなCソースをモデルで実現することは可能でしょうか。また、一般的にモデルで表現するとどのような作りになるのでしょうか。
if ( val 1> LABELX )
{
test[0]++ ;
}
if ( val 2> LABELY )
{
test[1]++ ;
}
0 Comments
Accepted Answer
Toshinobu Shintai
on 26 Jun 2020
Simulinkのブロックで汎化した記述をするのは難しいですね。添付した「my_model.slx」のように、Selectorを使えば書けるのですが、インクリメントする要素を変えると構造を変えなければなりません。
もし社内ルールでMATLAB Functionを使ってもよいのであれば、「my_model_2.slx」のように記述できるので、こちらの方がよいと思います。
Embedded Coderでコード生成した後のコードも添付しています。拡張子が.cのままでは添付できなかったので、.txtにしました。開く際は拡張子を修正してください。
6 Comments
Toshinobu Shintai
on 30 Jun 2020
「整数オーバーフローで飽和」の件ですが、ドキュメントが分かりにくくて申し訳ありません。改善のためフィードバックさせていただきます。
3行目の処理は、簡単に言えば変数初期化とデータ型定義のためです。
以降の処理でout(3)という記述を行うためには、事前にデータサイズが明確になっていなければなりませんので、最初に代入を記述することで、outがvecと同じデータ型、サイズになります。
More Answers (0)
See Also
Categories
Find more on System on Chip (SoC) 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!