メインコンテンツ

バス配列の要素への代入

この例では、バス配列内のバスにデータを代入する方法を示します。MATLAB Function ブロックでは、バス配列内のバスにデータを直接代入できます。バス配列内の特定の要素に部分的な代入を行うこともできます。

非バーチャル バスを受け取る MATLAB Function ブロックを含むモデル例を開いてコンパイルします。モデルをコンパイルするには、Simulink® ツールストリップの [モデル化] タブで、[モデルの更新] または [実行] をクリックします。モデルをコンパイルするとライン スタイルが更新されます。このライン スタイルは、バスを視覚的に識別するのに使用できます。

mdl = "ArrayOfBusesPartialAssignment";
open_system(mdl)
set_param(mdl,SimulationCommand="Update");

ArrayOfBusesPartialAssignment model

In Bus Element ブロックと Out Bus Element ブロックは、A という名前の Simulink.Bus オブジェクトを指定しています。入力バスの階層と指定された属性を表示するには、In Bus Element ブロックをダブルクリックします。

InBus bus hierarchy

最上位バスは、バス オブジェクト A によって定義された非バーチャル バスです。要素 a は boolean 信号です。要素 a1 はバス配列で、バス オブジェクト B によって定義された非バーチャル バスが 10 個含まれています。バス配列内の各バスは、bb1 という名前の要素で構成されています。

MATLAB Function ブロックは、ブロックの入出力のデータ型としてバス オブジェクト A を指定しています。この指定を表示するには、MATLAB Function ブロックをダブルクリックします。ツールストリップの [関数] タブで [端子とデータの管理] をクリックします。

MATLAB Function block data type

MATLAB Function ブロックは、関数を使用して、バス配列内の各バスの要素 b に新しい値を反復して代入します。この関数は、要素 a にも新しい値を代入します。

function y = fcn(u)

y = u;
y.a = false;
for idx = 1:length(y.a1)
    y.a1(idx).b = int32(zeros(5,1));
end

参考

トピック