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