メインコンテンツ

get_param

R2026b

パラメーターの名前と値の取得

説明

value = get_param(Object,Parameter) は、ターゲット オブジェクトの指定されたパラメーターの値を返します。たとえば、この構文を使用して Sine Wave ブロックの振幅値を取得できます。ターゲット オブジェクトは、ハンドルまたはパスとして指定されたモデル、サブシステム、ライブラリ、ブロック、ライン、端子、またはバス要素端子の要素のいずれかにすることができます。ハンドルとパスを取得する方法については、Get Handles and Pathsを参照してください。

Simulink® モデル、サブシステム、またはライブラリ、あるいはそのコンテンツをクエリするには、モデル、サブシステム、またはライブラリが読み込まれているか、開いていなければなりません。

例

例

すべて折りたたむ

mySubsystem という名前の Subsystem ブロックを含む myModel という名前の読み込み済みのモデルがあるとします。サブシステムには、myBlock という名前の Gain ブロックが含まれています。ゲイン値を取得します。

値を取得するには、2 つの入力が必要です。

この例では、ブロック パスを取得するのに十分な情報があります。"ブロック パス" は、モデルの階層構造内におけるモデルのルートからブロックまでのパスであり、階層内の各ステップはスラッシュで区切られます。ブロック パスを変数に格納します。

blockPath = "myModel/mySubsystem/myBlock";

クエリするパラメーターのプログラム上の名前を取得します。そのための 1 つの方法として、ブロックのドキュメンテーションを確認できます。ブロックのドキュメンテーション ページの「パラメーター」セクションで、パラメーターを見つけます。次に、「プログラムでの使用」セクションでプログラム上の名前を確認します。

この例では、Gain のページでパラメーター名を確認します。ゲイン値を格納するパラメーターのプログラム上の名前は Gain です。

パラメーター値を取得します。

gainValue = get_param(blockPath,"Gain");

ブロックに対してさらに操作を実行する場合は、ブロック パスの代わりにハンドルを使用することを検討します。ブロック パスからハンドルを取得するには、getSimulinkBlockHandle 関数を使用します。

h = getSimulinkBlockHandle(blockPath);

ハンドルを使用してパラメーター値を取得します。

gainValue = get_param(h,"Gain");

階層構造が複雑で、何百ものブロックが含まれている読み込み済みのモデルがあるとします。モデルのハンドルは変数 h に格納されています。名前にキー フレーズ Low-Pass Filter が含まれているすべての Transfer Fcn ブロックの伝達関数係数を取得します。

係数の値を取得するには、次の 2 つの入力が必要です。

名前にキー フレーズ Low-Pass Filter が含まれている Transfer Fcn ブロックのハンドルを取得します。find_system 関数を使用します。

hBlocks = find_system(h,Regexp="on",CaseSensitive="on",Type="Block",BlockType="TransferFcn",Name=".*Low-Pass Filter.*")

伝達関数係数を格納するパラメーターのプログラム上の名前を取得します。Transfer Fcn ブロックのドキュメンテーション ページ (Transfer Fcn) を開きます。「パラメーター」セクションで、クエリするパラメーターを見つけます。次に、「プログラムでの使用」セクションでプログラム上の名前を確認します。分子係数はプログラム上の名前が Numerator のパラメーターに格納され、分母係数はプログラム上の名前が Denominator のパラメーターに格納されます。

係数の値を取得します。

numeratorCoeffs = get_param(hBlocks,"Numerator");
denominatorCoeffs = get_param(hBlocks,"Denominator");

2 つの読み込み済みのモデル myModel1 および myModel2 があるとします。両方のモデルのメッセージ パラメーター値が同じであることを確認します。

モデル パラメーターのリストを取得します。

params = get_param("myModel1","ObjectParameters");

この関数は構造体を返します。モデル パラメーター名を含む cell 配列を作成します。

paramNames = fieldnames(params);

メッセージ パラメーターの末尾は略語 Msg です。略語 Msg を含むすべてのモデル パラメーター名を取得します。

msgNames = paramNames(contains(paramNames,'Msg'));

2 つのモデルのメッセージ パラメーター値を比較します。値が異なっているパラメーターの名前を表示します。

mdl = ["myModel1";"myModel2"];

for i=1:length(msgNames)
    val = get_param(mdl,msgNames{i});
    if(length(unique(val))~=1)
        disp(msgNames{i})
    end
end

get_param 関数を使用してクエリできるパラメーターの一部では、許容される値の数が有限です。たとえば、Sum ブロックのアイコン形状パラメーターでは、rectangular または round の 2 つの値のいずれかしか指定できません。パラメーターで使用可能な値のオプションのリストを取得するには、パラメーター値を取得する場合と同様に get_param 関数を使用しますが、関数の入力で指定するパラメーター名に接頭辞 options@ を追加します。

myModel という名前の読み込み済みのモデルがあるとします。モデルには、mySquareBlock という名前の Square ブロック、mySubsystemBlock という名前のマスク Subsystem ブロック、および注釈が含まれています。

Square ブロックの Output signal type パラメーターのオプションのリストを取得します。

funcoptions = get_param("myModel/mySquareBlock","options@OutputSignalType")
funcoptions = 1×3 cell
    {'auto'}    {'real'}    {'complex'}

Subsystem ブロックのマスク サブシステム パラメーター Read/Write permissions のオプションのリストを取得します。

get_param("myModel/mySubsystemBlock","options@Permissions")
ans = 1×3 cell
    {'ReadWrite'}    {'ReadOnly'}    {'NoReadOrWrite'}

AlgebraicLoopMsg という名前のモデル パラメーターのオプションのリストを取得します。

get_param("myModel","options@AlgebraicLoopMsg")
ans = 1×3 cell
    {'none'}    {'warning'}    {'error'}

注釈の水平方向の配置用のオプションのリストを取得します。そのために、注釈のハンドルを取得します。

h = find_system(gcs,FindAll="on",Type="annotation");

次に、オプションのリストを取得します。

get_param(h,"options@HorizontalAlignment")
ans = 1×3 cell
    {'left'}    {'center'}    {'right'}

変数に設定されているマスク パラメーターの値を取得するには、get_param 関数を使用します。関数の入力で指定するパラメーター名に接頭辞 value@ を追加します。

メモ

値なしで文字列をタイプ オプションとして使用する [ポップアップ] および [ラジオ ボタン] マスク パラメーターの場合、評価値は選択したオプションのインデックスとなります。

myBlock という名前のマスク Subsystem ブロックを含む myModel という名前のモデルがあるとします。マスクには、パラメーター名が magnitude のスライダーがあります。パラメーターの値は、ベース変数に設定されています。変数の名前と値を取得します。

まず、名前を取得します。そのために、get_param 関数を使用して magnitude パラメーターの値を取得します。このパラメーターは該当する変数に設定されているため、パラメーター値をクエリすると、変数の名前が返されます。

blockPath = "myModel/myBlock";
varName = get_param(blockPath,"magnitude");

次に、変数の値を取得します。前と同じコマンドを使用しますが、パラメーター名の前に接頭辞 value@ を追加します。

varValue = get_param(blockPath,"value@magnitude");

myModel という名前の読み込み済みのモデルがあるとします。グローバル パラメーター名のリストを取得します。次に、CurrentSystem という名前のグローバル パラメーターの値を取得します。

グローバル パラメーター名のリストを取得するには、Simulink ルート パラメーター名とモデル パラメーター名の差異を求めます。

モデル パラメーターの名前を取得します。

modelParamNames = fieldnames(get_param("myModel","ObjectParameters"));

Simulink ルート パラメーターの名前を取得します。

rootParamNames = fieldnames(get_param(0,"ObjectParameters"));

グローバル パラメーターの名前を取得します。

globalParamNames = setdiff(rootParamNames,modelParamNames);

CurrentSystem という名前のグローバル パラメーターの値を取得します。

globalparamval = get_param(0,"CurrentSystem")
globalparamval = 
'myModel'

入力引数

すべて折りたたむ

クエリするターゲット オブジェクトのハンドル、名前、またはパス、あるいはルート。ターゲット オブジェクトの指定方法は、ターゲット オブジェクトのタイプによって異なります。

  • モデル — モデルの名前またはハンドル。

  • サブシステム — サブシステムの名前またはハンドル。

  • ライブラリ — ライブラリの名前またはハンドル。

  • ブロック — ブロックのパスまたはハンドル。

  • ライン — ラインのハンドル。

  • 端子 — 端子のハンドル。

  • 端子の要素 — モデルの名前かサブシステム ブロックのパス、スラッシュ、および端子の名前かバス要素のパスで構成されるパス。バス要素端子の場合、最上位のバスからターゲットの要素までの階層をバス要素のパスとして指定します。階層の各名前はドットで区切ります。

ハンドルとパスを取得する方法の詳細については、Get Handles and Pathsを参照してください。ハンドルは数値スカラーまたは数値ベクトルの形式に設定します。名前とパスは string、string 配列、文字ベクトル、または文字ベクトルの cell 配列の形式に設定します。

0 を指定して、現在の Simulink セッションのグローバル パラメーターおよびモデル パラメーターなどの、ルート パラメーター名を取得します。

  • グローバル パラメーターにはエディターの基本設定と Simulink Coder™ パラメーターが含まれます。

  • モデル パラメーターには、コンフィギュレーション パラメーター、Simulink Coder パラメーターおよび Simulink Code Inspector™ パラメーターが含まれます。

例: "myModel/mySubsystem/myBlock"

データ型: double | array of doubles | string | string array | character vector | cell array of character vectors

パラメーター、プロパティ、または属性の名前。string または文字ベクトルとして指定します。一部の名前では大文字と小文字が区別されます。

次の表に特殊なケースを示します。

パラメーター値
ObjectParameters

指定したオブジェクトのパラメーター名を個別のフィールドとする構造体配列。

DialogParameters

ブロック ダイアログ ボックスのパラメーター名を個別のフィールドとする構造体配列。ブロックにマスクがある場合は代わりにマスク パラメーターを返します。

ParameterValuesStruct

マスク ブロックのパラメーター名とその現在の値を含む構造体。

パラメーター、プロパティ、または属性については、対応するドキュメンテーション ページの「プログラムでの使用」に関する情報を参照してください。以下に例を示します。

  • モデル — コンフィギュレーション パラメーターのリファレンス ページを参照してください。

  • ブロック — 共通ブロック プロパティおよびブロックのリファレンス ページを参照してください。

  • 端子 — 信号プロパティツールのリファレンス ページを参照してください。

  • 端子の要素 — In Bus Element ブロックおよび Out Bus Element ブロックのリファレンス ページを参照してください。

例: "ObjectParameters"

例: "Solver"

例: "SimulationCommand"

データ型: string | character vector

出力引数

すべて折りたたむ

パラメーターの値。パラメーター タイプで決まる形式で返されます。複数のオブジェクトを指定する場合、出力は cell 配列になります。

次の表に特殊なケースを示します。

パラメーター値
ObjectParameters

指定したオブジェクトのパラメーター名を個別のフィールドとする構造体配列。

DialogParameters

ブロック ダイアログ ボックスのパラメーター名を個別のフィールドとする構造体配列。ブロックにマスクがある場合は代わりにマスク パラメーターを返します。

get_param(0,"ObjectParameters") を指定してルート パラメーターを取得すると、出力 value はルート パラメーター名を構造体内の個別のフィールドとする構造体配列になります。各パラメーター フィールドは次のフィールドを含む構造体です。

  • Type — パラメーター タイプの値。'boolean'、'string'、'int'、'real'、'point'、'rectangle'、'matrix'、'enum'、'ports'、または 'list' です。

  • Enum — 列挙文字ベクトル値の cell 配列。'enum' のパラメーター タイプにのみ適用されます。

  • Attributes — パラメーターの属性を定義する文字ベクトルの cell 配列。値は 'read-write'、'read-only'、'read-only-if-compiled'、'write-only'、'dont-eval'、 'always-save'、'never-save'、'nondirty'、または 'simulation' です。

バージョン履歴

R2006a より前に導入