バスエディタでの構造体について
8 views (last 30 days)
Show older comments
matlab simulinkの初心者です。
非常に初歩的な質問かもしれませんがよろしくお願いいたします。
バスエディタで構造体の中で構造体を使うといった変数の定義の仕方はできないのでしょうか
例えば、A[1]という構造体の中にはID(double型)、a[1]~a[10]の配列があります。
a[1]~a[10]はそれぞれtime(int型)、distance(double型)の2つの変数をもった構造体です。
(Aの構造体の定義をバスエディタで行い、データ型アシスタントでバスオブジェクトをaとして次元を10とする。添付バスエディタ.PNGのようなイメージ)
その後、simulink上でBusSelectorやSelectorを用いればMATLAbFunction上で変数として扱えると、考えたのですができませんでした。(simulink.PNGのような状態)
構造体の中に構造体を用いることは不可能で、a1,a2,・・・a10のように異なる変数名を定義する必要があるのでしょうか。
お手数ですが、よろしくお願いいたします。
0 Comments
Accepted Answer
Toshinobu Shintai
on 17 Mar 2023
添付画像が見つかりませんので、私の予想も含めての回答になります。また、新しいバージョンではバスエディターではなくて型エディターという名前に変わっていますが、操作はほとんど変わらないと思いますので、それを用いて説明します。
まず、time(int型)、distance(double型)の2つの変数をもった構造体を作成します。
ここでは、名前をa_busとしました。次にaを10個持つ配列Aを定義しました。
次に、モデルエクスプローラーで、Simulink.Signalオブジェクトを作成します。
ここでは、信号の名前をAとして、次元を10としました。これにより、Aは構造体配列の信号として定義されます。
Simulinkでは、例えばInportブロックに以下のように設定し、
信号線を右クリックしてプロパティを開き、以下のように設定します。
これにより、以下のように構造体配列の信号を扱えるようになります。
2 Comments
Toshinobu Shintai
on 20 Mar 2023
Edited: Toshinobu Shintai
on 20 Mar 2023
画像の中に置かれているブロックは左から「Inport」ブロック、「Selector」ブロック、「Bus Selector」ブロック、「Outport」ブロックです。申し訳ありませんが、作ったモデルは削除してしまいました。
ドキュメントを参考に、ブロックを並べて接続し、設定してみてください。
More Answers (0)
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!