このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MATLAB からのルックアップ テーブル データのインポート
ダイアログ ボックスの [テーブルとブレークポイント] タブ内でそれらのデータを参照することにより、MATLAB ワークスペースの変数からテーブルとブレークポイントのデータをインポートできます。次の例では、MATLAB ワークスペースから標準形式および非標準形式のデータをインポートおよびエクスポートする方法を示します。
標準形式のルックアップ テーブル データのインポート
n-D Lookup Table ブロックの 3 次元ルックアップ テーブルを指定すると仮定します。
ルックアップ テーブルのブレークポイントとテーブル データとして使用するワークスペース変数を作成します。
table3d_map = zeros(2,4,3); table3d_map(:,:,1) = [ 1 2 3 4; 5 6 7 8]; table3d_map(:,:,2) = [ 11 12 13 14; 15 16 17 18]; table3d_map(:,:,3) = [ 111 112 113 114; 115 116 117 118]; bp3d_z =[ 0 10 20]; bp3d_x =[ 0 10 20 30]; bp3d_y =[ 400 6400];
テーブル データ: table3d_map
ブレークポイント 1: bp3d_y
ブレークポイント 2: bp3d_x
ブレークポイント 3: bp3d_z
[テーブルとブレークポイントの編集] をクリックしてルックアップ テーブル エディターを開き、ワークスペース変数からのデータを表示します。
標準形式のルックアップ テーブル データの伝播
ルックアップ テーブル データを変更した場合、[ファイル] 、 [ブロック データの更新] を使用して、変更内容をデータのインポート元の MATLAB ワークスペース変数に伝播させることを検討してください。
ルックアップ テーブル エディターを使用して、Simulink.LookupTable
のテーブル データとブレークポイント ベクトルおよび Simulink.Breakpoint
オブジェクトのブレークポイント ベクトルを編集し、変更をオブジェクトに伝播して戻すこともできます。
標準形式のルックアップ テーブル データのインポートに記載されている MATLAB ワークスペース変数からインポートされたルックアップ テーブル変数を変更すると仮定します。たとえば、(1,1,1) のデータの値を 1
から 33
に変更します。この変更をワークスペースの table3d_map
に伝播するには、ルックアップ テーブル エディターのツールストリップで [適用] をクリックします。
非標準形式のルックアップ テーブル データのインポート
n-D Lookup Table ブロックの 3 次元ルックアップ テーブルを指定すると仮定します。ルックアップ テーブルのブレークポイントとテーブル データとして使用するワークスペース変数を作成します。テーブル データの変数 table3d_map_custom
は 2 次元行列です。
table3d_map_custom = zeros(6,4); table3d_map_custom = [ 1 2 3 4; 5 6 7 8; 11 12 13 14; 15 16 17 18; 111 112 113 114; 115 116 117 118]; bp3d_z =[ 0 10 20]; bp3d_x =[ 0 10 20 30]; bp3d_y =[ 400 6400];
reshape
コマンドを使用して table3d_map_custom
をテーブル データ入力の 3 次元行列に変換しています。
テーブル データ:
reshape(table3d_map_custom,[2,4,3])
ブレークポイント 1:
bp3d_y
ブレークポイント 2:
bp3d_x
ブレークポイント 3:
bp3d_z
[テーブルとブレークポイントの編集] をクリックしてルックアップ テーブル エディターを開き、ワークスペース変数からのデータを表示します。
ルックアップ テーブル エディターで 1 を 33 に変更します。ルックアップ テーブル エディターはテーブルのコピーを保存して、変更を記録します。MATLAB® ワークスペースから変数値を復元するには、ルックアップ テーブル エディターのツールストリップで [再読み込み] をクリックします。MATLAB ワークスペースの変数を編集済みのデータで更新するには、ルックアップ テーブル エディターのツールストリップで [適用] をクリックします。n-D Lookup Table ブロックの非標準テーブル データを含んでいるワークスペース変数 table3d_map_custom
への変更は伝播できません。変更を伝播するには、MATLAB 検索パスに存在するカスタマイズ関数を登録しなければなりません。詳細については、非標準形式のルックアップ テーブル データの伝播を参照してください。
非標準形式のルックアップ テーブル データの伝播
この例では、ルックアップ テーブル エディターでの変更を非標準形式のワークスペース変数に伝播する方法を示します。非標準形式のルックアップ テーブル データのインポートに記載されている Simulink® モデルには、2 次元のワークスペース変数 table3d_map_custom
からテーブル データを取得する 3 次元ルックアップ テーブルがあると仮定します。ルックアップ テーブル エディターでルックアップ テーブルを更新し、これらの変更をカスタマイズ関数を使用して table3d_map_custom
に伝播します。
次の内容の
sl_customization.m
という名前のファイルを作成します。function sl_customization(cm) cm.LookupTableEditorCustomizer.getTableConvertToCustomInfoFcnHandle{end+1} = ... @myGetTableConvertInfoFcn; end
この関数では、
引数
cm
はカスタマイズ マネージャー オブジェクトのハンドルです。ハンドル
@myGetTableConvertInfoFcn
がcm.LookupTableEditorCustomizer.getTableConvertToCustomInfoFcnHandle
の cell 配列内の関数ハンドルのリストに追加されます。cell 配列に追加するハンドルの関数には任意の英数字名を使用できます。
同じファイルで、関数
myGetTableConvertInfoFcn
を定義します。function blkInfo = myGetTableConvertInfoFcn(blk,tableStr) blkInfo.allowTableConvertLocal = true; blkInfo.tableWorkSpaceVarName = 'table3d_map_custom'; blkInfo.tableConvertFcnHandle = @myConvertTableFcn; end
関数
myGetTableConvertInfoFcn
はblkInfo
オブジェクトを返します。このオブジェクトには以下の 3 つのフィールドが含まれています。allowTableConvertLocal
— ブロックのテーブル テータの変換を許可します。tableWorkSpaceVarName
— 非標準テーブル形式をもつワークスペース変数の名前を指定します。tableConvertFcnHandle
— 変換関数のハンドルを指定します。
allowTableConvertLocal
がtrue
に設定されている場合、そのブロックのテーブル データは名前がtableWorkSpaceVarName
に一致するワークスペース変数の非標準形式に変換されます。変換関数は、tableConvertFcnHandle
が指定するハンドルに対応します。変換関数には任意の英数字名を使用できます。同じファイルで、関数
myConvertTableFcn
を定義します。この関数はサイズが "行数 x 列数 x 高さ" の 3 次元のルックアップ テーブルを、サイズ "(行数 x 高さ) x 列数" の 2 次元の変数に変換します。% Converts 3-dimensional lookup table from Simulink format to % nonstandard format used in workspace variable function cMap = myConvertTableFcn(data) % Determine the row and column number of the 3D table data mapDim = size(data); numCol = mapDim(2); numRow = mapDim(1)*mapDim(3); cMap = zeros(numRow, numCol); % Transform data back to a 2-dimensional matrix cMap = reshape(data,[numRow,numCol]); end
sl_customization.m
を MATLAB 検索パス上に配置します。検索パス上にはsl_customization.m
という名前のファイルを複数もつことができます。詳細については、複数のカスタマイズ関数を使用する動作を参照してください。MATLAB コマンド プロンプトで Simulink のカスタマイズを更新します。
sl_refresh_customizations
ルックアップ テーブル ブロックのルックアップ テーブル エディターを開き、[ファイル] 、 [ブロック データの更新] を選択します。[はい] をクリックしてワークスペース変数
table3d_map_custom
を上書きします。ベース ワークスペースで
table3d_map_custom
の値を確認します。table3d_map_custom = 33 2 3 4 5 6 7 8 11 12 13 14 15 16 17 18 111 112 113 114 115 116 117 118
ルックアップ テーブル エディターの変更がワークスペース変数に伝播されています。
メモ
ワークスペース変数 table3d_map_custom
を上書きしない場合、ワークスペース変数を数値データに置き換えるか確認するメッセージが表示されます。[はい] をクリックすると、[テーブル データ] フィールドの式を数値データに置き換えます。ルックアップ テーブル エディターによるテーブル データの変更がブロック ダイアログ ボックスに表示されないようにする場合は [いいえ] をクリックします。
複数のカスタマイズ関数を使用する動作
MATLAB セッションの開始時に、Simulink はパス上の sl_customization.m
カスタマイズ ファイルをそれぞれ読み込み、関数 sl_customization
を実行します。各関数を実行すると、そのセッションのカスタマイズが作成されます。
ルックアップ テーブル エディターで [ファイル] 、 [ブロック データの更新] を選択すると、エディターは cm.LookupTableEditorCustomizer.getTableConvertToCustomInfoFcnHandle
の cell 配列で関数ハンドルのリストを確認します。cell 配列に 1 つ以上の関数ハンドルが含まれる場合、allowTableConvertLocal
プロパティによってルックアップ テーブル エディターの変更を伝播できるかどうかが決定されます。
値が
true
に設定されている場合、テーブル データはワークスペース変数では非標準形式に変換されます。値が
false
に設定されている場合、テーブル データはワークスペース変数では非標準形式に変換されません。値が
true
に設定され、別のカスタマイズ関数ではfalse
であると指定されている場合、ルックアップ テーブル エディターはエラーを報告します。