バスエディタでの構造体について

8 views (last 30 days)
A.T
A.T on 16 Mar 2023
Edited: Toshinobu Shintai on 20 Mar 2023
matlab simulinkの初心者です。
非常に初歩的な質問かもしれませんがよろしくお願いいたします。
バスエディタで構造体の中で構造体を使うといった変数の定義の仕方はできないのでしょうか
例えば、A[1]という構造体の中にはIDdouble型)、a[1]a[10]の配列があります。
a[1]a[10]はそれぞれtime(int)distance(double)2つの変数をもった構造体です。
Aの構造体の定義をバスエディタで行い、データ型アシスタントでバスオブジェクトをaとして次元を10とする。添付バスエディタ.PNGのようなイメージ)
その後、simulink上でBusSelectorSelectorを用いればMATLAbFunction上で変数として扱えると、考えたのですができませんでした。(simulink.PNGのような状態)
構造体の中に構造体を用いることは不可能で、a1,a2,・・・a10のように異なる変数名を定義する必要があるのでしょうか。
お手数ですが、よろしくお願いいたします。

Accepted Answer

Toshinobu Shintai
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
A.T
A.T on 19 Mar 2023
コメントありがとうございます
私の方が、画像を添付できてなく申し訳ありませんでした。
ご教示いただいた内容理解できました。ありがとうございます。
ただ、当方プログラミング初心者のため、ご教示いただいた下記プログラムをどのように書いたらいいのかが分からないため、サンプルでもいいのでこちらのコードを教えていただけないでしょうか?
宜しくお願いします。
Toshinobu Shintai
Toshinobu Shintai on 20 Mar 2023
Edited: Toshinobu Shintai on 20 Mar 2023
画像の中に置かれているブロックは左から「Inport」ブロック、「Selector」ブロック、「Bus Selector」ブロック、「Outport」ブロックです。申し訳ありませんが、作ったモデルは削除してしまいました。
ドキュメントを参考に、ブロックを並べて接続し、設定してみてください。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!