バスエディタでの構造体について
8 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Toshinobu Shintai
2023 年 3 月 17 日
添付画像が見つかりませんので、私の予想も含めての回答になります。また、新しいバージョンではバスエディターではなくて型エディターという名前に変わっていますが、操作はほとんど変わらないと思いますので、それを用いて説明します。
まず、time(int型)、distance(double型)の2つの変数をもった構造体を作成します。
ここでは、名前をa_busとしました。次にaを10個持つ配列Aを定義しました。
次に、モデルエクスプローラーで、Simulink.Signalオブジェクトを作成します。
ここでは、信号の名前をAとして、次元を10としました。これにより、Aは構造体配列の信号として定義されます。
Simulinkでは、例えばInportブロックに以下のように設定し、
信号線を右クリックしてプロパティを開き、以下のように設定します。
これにより、以下のように構造体配列の信号を扱えるようになります。
2 件のコメント
Toshinobu Shintai
2023 年 3 月 20 日
編集済み: Toshinobu Shintai
2023 年 3 月 20 日
画像の中に置かれているブロックは左から「Inport」ブロック、「Selector」ブロック、「Bus Selector」ブロック、「Outport」ブロックです。申し訳ありませんが、作ったモデルは削除してしまいました。
ドキュメントを参考に、ブロックを並べて接続し、設定してみてください。
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Simulink Function についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!