get_param
パラメーターの名前と値の取得
説明
例
次の入力引数を指定して関数 get_param
を使用することで、ブロック パラメーターの値を取得できます。
ブロック ハンドル、またはブロック名を含む絶対ブロック パス (たとえば、
'myModel/mySubsystem/myblock'
)パラメーター名
ブロックのハンドルとパスの詳細については、Get Handles and Pathsを参照してください。
この例では、Alpha-sensor Low-pass Filter
という名前の Transfer Function ブロックで指定されている伝達関数の係数を取得します。
ブロックは、
slexAircraftExample
モデルのController
サブシステムにあります。伝達関数の分子の係数は、
Numerator
パラメーターに保存されます。伝達関数の分母の係数は、Denominator
パラメーターに保存されます。
例を開きます。次に、slexAircraftExample
モデルを読み込みます。
mdl = 'slexAircraftExample';
load_system(mdl)
伝達関数の係数を取得します。
path = [mdl,'/Controller/Alpha-sensor Low-pass Filter']; num = get_param(path,'Numerator')
num = '[1]'
denom = get_param(path,'Denominator')
denom = '[Tal,1]'
ブロック パスが長く、複数のパラメーターを取得する場合は、ブロック ハンドルの使用を検討してください。
次の入力引数を指定して関数 get_param
を使用することで、ブロック パラメーターの値を取得できます。
ブロック ハンドル、またはブロック名を含む絶対ブロック パス (たとえば、
'myModel/mySubsystem/myblock'
)パラメーター名
この例では、Alpha-sensor Low-pass Filter
という名前の Transfer Function ブロックで指定されている伝達関数の係数を取得します。
ブロックは、
slexAircraftExample
モデルのController
サブシステムにあります。伝達関数の分子の係数は、
Numerator
パラメーターに保存されます。伝達関数の分母の係数は、Denominator
パラメーターに保存されます。
例を開きます。次に、関数 getSimulinkBlockHandle
を使用してブロック ハンドルを取得します。ブロック ハンドルの取得とモデルの読み込みを同時に行うには、関数 getSimulinkBlockHandle
の 2 番目の引数に true
を指定します。
path = 'slexAircraftExample/Controller/Alpha-sensor Low-pass Filter';
h = getSimulinkBlockHandle(path,true)
h = 490.0016
パラメーター値を取得するには、ハンドルを使用してブロックを指定します。ハンドルの値を手動で入力しないでください。MATLAB® コマンド ウィンドウで関数 getSimulinkBlockHandle
によって出力された値は、丸めのため、ハンドル値に一致しないことがあります。代わりにハンドルを変数に代入し、その変数の名前を使用してブロックを指定します。この例では、h
という名前の変数に値を代入しています。
num = get_param(h,'Numerator')
num = '[1]'
denom = get_param(h,'Denominator')
denom = '[Tal,1]'
次の入力引数を指定して関数 get_param
を使用することで、ブロック パラメーターの値を取得できます。
ブロック ハンドル、またはブロック名を含む絶対ブロック パス (たとえば、
'myModel/mySubsystem/myblock'
)パラメーター名
この例では、パラメーター名を取得する方法を示します。
slexAircraftExample
モデルの Alpha-sensor Low-pass Filter
という名前の Transfer Function ブロックの伝達関数の係数を取得するとします。これを行うには、伝達関数の係数を格納しているパラメーターの名前を取得する必要があります。
例を開きます。
Alpha-sensor Low-pass Filter
という名前の Transfer Function ブロックのハンドルを取得します。ブロック ハンドルの取得とモデルの読み込みを同時に行うには、関数 getSimulinkBlockHandle
の 2 番目の引数に true
を指定します。
path = 'slexAircraftExample/Controller/Alpha-sensor Low-pass Filter';
h = getSimulinkBlockHandle(path,true);
関数 get_param
を使用して Alpha-sensor Low-pass Filter
という名前の Transfer Function ブロックのすべてのブロック パラメーターの名前を取得します。
get_param(h,'DialogParameters')
ans = struct with fields:
Numerator: [1×1 struct]
Denominator: [1×1 struct]
ParameterTunability: [1×1 struct]
AbsoluteTolerance: [1×1 struct]
ContinuousStateAttributes: [1×1 struct]
伝達関数の係数が Numerator
パラメーターおよび Denominator
パラメーターを使用して指定されていることが出力に示されます。これらのパラメーター名を使用して、伝達関数の分子と分母の係数を取得します。
num = get_param(h,'Numerator'); denom = get_param(h,'Denominator')
denom = '[Tal,1]'
次の入力引数を指定して関数 get_param
を使用することで、ブロック パラメーターの値を取得できます。
ブロック ハンドル、またはブロック名を含む絶対ブロック パス (たとえば、
'myModel/mySubsystem/myblock'
)パラメーター名
この例では、モデル内の名前に特定のキーワードを含むすべてのブロックの絶対ブロック パスを取得する方法を示します。ブロック パスを取得する方法の詳細については、Get Handles and Pathsを参照してください。
slexAircraftExample
モデル内のフィルターとして動作するすべての Transfer Function ブロックの伝達関数の係数を取得するとします。
例を開きます。次に、slexAircraftExample
モデルを読み込みます。
mdl = 'slexAircraftExample';
load_system(mdl)
find_system
関数を使用して、slexAircraftExample
モデル内の名前に filter
という語を含むすべてのブロックのパスを取得します。正規表現を使用し、検索を大文字小文字の区別なしにし、検索をブロックに制限します。正規表現を使用するには、Regexp
パラメーターの値を 'on'
に設定します。検索を大文字小文字の区別なしにするには、CaseSensitive
パラメーターの値を 'off'
に設定します。検索をブロックに制限するには、Type
パラメーターの値を 'Block' に設定します。.
paths = find_system(mdl,Regexp='on',CaseSensitive='off',Type='Block',Name='.*filter.*')
paths = 3×1 cell
{'slexAircraftExample/Controller/Alpha-sensor↵Low-pass Filter'}
{'slexAircraftExample/Controller/Pitch Rate↵Lead Filter' }
{'slexAircraftExample/Controller/Stick↵Prefilter' }
検索の深さを指定しない場合、find_system
関数はモデルの階層構造の指定したレベル、および指定したレベルに含まれているすべての下位レベルですべてのブロックを検索します。slexAircraftExample
はモデルの階層構造の最上位であるため、モデルの階層構造のすべてのレベルにあるすべてのブロックがコマンドで返されます。
ブロック パスを使用して伝達関数の係数を取得します。たとえば、以下のコマンドを使用して Alpha-sensor Low-Pass
フィルターの伝達関数の係数を取得します。
num = get_param(paths{1},'Numerator')
num = '[1]'
denom = get_param(paths{1},'Denominator')
denom = '[Tal,1]'
vdp
モデルのブロックのタイプのリストを取得します。
例を開きます。次に、vdp
モデルを読み込みます。
load_system('vdp')
vdp
モデルのブロックのパスと名前のリストを取得します。
blockpaths = find_system('vdp','Type','Block');
vdp
モデルのブロックごとに BlockType
パラメーターの値を取得します。
blocktypes = get_param(blockpaths,'BlockType')
blocktypes = 12×1 cell
{'CustomCallbackButton'}
{'Constant' }
{'SubSystem' }
{'Product' }
{'Scope' }
{'Math' }
{'Sum' }
{'Sum' }
{'Integrator' }
{'Integrator' }
{'Outport' }
{'Outport' }
次の入力引数を指定して関数 get_param
を使用することで、モデル パラメーターの値を取得できます。
モデル名
モデル パラメーター名
IntegerOverflowMsg
パラメーターの値はモデルが整数オーバーフローを処理する方法を示します。モデルはメッセージを出力しないか、警告メッセージを出力するか、エラー メッセージを出力する場合があります。
2 つのモデルの IntegerOverflowMsg
パラメーターの値を比較するとします。
例を開きます。次に、vdp
モデルおよび f14
モデルを読み込みます。
load_system({'vdp','f14'})
vdp
モデルと f14
モデルの IntegerOverflowMsg
パラメーターの値を取得します。
vdpval = get_param('vdp','IntegerOverflowMsg'); f14val = get_param('f14','IntegerOverflowMsg');
整数オーバーフローが発生すると、vdp
モデルは警告を出力しますが、f14
モデルは何もメッセージを出力しません。
関数 strcmp
を使用して 2 つのパラメーター値を比較します。
strcmp(vdpval,f14val)
ans = logical
0
関数 strcmp
は 0
を出力します。これは、2 つのモデルで IntegerOverflowMsg
パラメーターに異なる値が含まれていることを示しています。
次の入力引数を指定して関数 get_param
を使用することで、モデル パラメーターの値を取得できます。
モデル名
モデル パラメーター名
2 つのモデルのメッセージ パラメーター値を比較して、メッセージなし、警告メッセージ、エラー メッセージで処理される状況の観点から一貫性を確保したいとします。ただし、すべてのメッセージ パラメーターの名前がわかっているわけではありません。
例を開きます。次に、vdp
モデルおよび f14
モデルを読み込みます。
load_system({'vdp','f14'})
すべてのモデル パラメーターのリストを取得します。
params = get_param('vdp','ObjectParameters');
この関数は構造体を返します。モデル パラメーター名を含む cell 配列を作成します。
names = fieldnames(params);
メッセージ パラメーターの末尾は略語 Msg
です。略語 Msg
を含むすべてのモデル パラメーター名を取得します。
msgnames = names(contains(names,'Msg'));
vdp
モデルと f14
モデルのメッセージ パラメーター値を比較します。値が異なっているパラメーターの名前を出力します。
vdpval = cell(1,length(msgnames)); f14val = vdpval; for i=1:length(msgnames) vdpVal{i} = get_param('vdp',msgnames{i}); f14Val{i} = get_param('f14',msgnames{i}); if(strcmp(vdpVal{i},f14Val{i})<1) disp(msgnames{i}) end end
IntegerOverflowMsg IntegerSaturationMsg
2 つのメッセージ パラメーターに異なる値が含まれています。
次のいずれかのオプションのリストを取得するには、キーワード options
を指定して関数 get_param
を使用します。
ブロック パラメーター
モデル パラメーター
オブジェクト プロパティ (たとえば、注釈用の水平方向の配置オプション)
この例では、ブロック パラメーター、マスク パラメーター、およびモデル パラメーターのオプションのリストを取得する方法を説明します。
ブロック パラメーターのオプションのリストの取得
例を開きます。次に、vdp
モデルを読み込みます。
load_system('vdp')
Square ブロックの Output signal type
パラメーターのオプションのリストを取得します。
funcoptions = get_param('vdp/Square','options@OutputSignalType')
funcoptions = 1×3 cell
{'auto'} {'real'} {'complex'}
マスク サブシステム パラメーターのオプションのリストの取得
Mu
という名前のマスク Subsystem ブロックの Read/Write permissions
パラメーターのオプションのリストを取得します。
get_param('vdp/Mu','options@Permissions')
ans = 1×3 cell
{'ReadWrite'} {'ReadOnly'} {'NoReadOrWrite'}
モデル パラメーターのオプションのリストの取得
AlgebraicLoopMsg
という名前のモデル パラメーターのオプションのリストを取得します。
get_param('vdp','options@AlgebraicLoopMsg')
ans = 1×3 cell
{'none'} {'warning'} {'error'}
注釈のオプションのリストの取得
vdp
モデル内の注釈を検索します。
h = find_system(gcs,'FindAll','on','Type','annotation');
行列 h
内のハンドルに対応している注釈テキストを出力します。
get_param(h,'PlainText')
ans = 3×1 cell
{'Copyright 2004-2024 The MathWorks, Inc.'}
{'Van der Pol Equation' }
{'x_1' =x_2↵↵x_2' =µ(1-x_1^2) x_2 - x_1' }
タイトル注釈 'Van der Pol Equation'
の水平方向の配置用のオプションのリストを取得します。
get_param(h(2),'options@HorizontalAlignment')
ans = 1×3 cell
{'left'} {'center'} {'right'}
関数 get_param
でキーワード value
を使用して、マスク ブロック パラメーターの値にアクセスできます。
例を開きます。次に、vdp
モデルを開きます。
open_system('vdp')
Mu
という名前のマスク Subsystem ブロックの gain
パラメーターの値を取得します。
get_param('vdp/Mu','value@gain')
ans = 2
モデルでブロックをダブルクリックします。
マスクで、gain
パラメーターを変更するスライダーを移動します。
gain
パラメーターの値を再度取得します。
get_param('vdp/Mu','value@gain')
ans = 2
グローバル パラメーターの名前と値を取得します。
グローバル パラメーター名のリストの取得
Simulink® ルート パラメーター名とモデル パラメーター名の差異を探して、グローバル パラメーター名のリストを取得できます。
例を開きます。次に、vdp
モデルを読み込みます。
load_system('vdp')
すべてのモデル パラメーターの名前を取得します。
modelparamnames = fieldnames(get_param('vdp','ObjectParameters'));
Simulink ルート パラメーター名のリストを取得します。
rootparamnames = fieldnames(get_param(0,'ObjectParameters'));
ルート パラメーター名とモデル パラメーター名のリストの差異を探してグローバル パラメーターの名前を取得します。
globalparamnames = setdiff(rootparamnames,modelparamnames);
グローバル パラメーター値の取得
グローバル パラメーターの値を取得します
globalparamval = get_param(0,'CurrentSystem')
globalparamval = 'vdp'
入力引数
オブジェクトの名前、パス、ハンドル、またはルート。文字ベクトル、文字ベクトルの cell 配列、string 配列、数値スカラー、または 0
として指定します。
ターゲット オブジェクトを指定する方法はタイプによって異なります。
モデル — モデルの名前またはハンドル。
サブシステム — サブシステムの名前またはハンドル。
ライブラリ — ライブラリの名前またはハンドル。
ブロック — ブロックのパスまたはハンドル。
ライン — ラインのハンドル。
端子 — 端子のハンドル。
端子の要素 — モデルの名前かサブシステム ブロックのパス、スラッシュ、および端子の名前かバス要素のパスで構成されるパス。バス要素端子の場合、最上位のバスからターゲットの要素までの階層をバス要素のパスとして指定します。階層の各名前はドットで区切ります。
ハンドルとパスを取得する方法の詳細については、Get Handles and Pathsを参照してください。
0
を指定して、現在の Simulink セッションのグローバル パラメーターおよびモデル パラメーターなどの、ルート パラメーター名を取得します。
グローバル パラメーターにはエディターの基本設定と Simulink Coder™ パラメーターが含まれます。
モデル パラメーターには、コンフィギュレーション パラメーター、Simulink Coder パラメーターおよび Simulink Code Inspector™ パラメーターが含まれます。
例: 'vdp/Mu'
例: 'mymodel/Subsystem1/Out1.nonsinusoidal.saw'
ヒント
同じブロックに対する
get_param
を複数回呼び出す場合は、数値ハンドルを使用してブロックを指定します。この方法は、get_param
でブロックの絶対パスを使用するよりも効率的です。getSimulinkBlockHandle
を使用してブロック ハンドルを取得します。通常 MATLAB® に表示されるよりも多くの桁を指定しなければならないため、ハンドルの数値 (
5.007
など) を手動で指定しようとしないでください。ハンドルを変数に代入し、その変数の名前を使用します。
データ型: char
| string
| double
パラメーター、プロパティ、または属性の名前。文字ベクトルまたは string スカラーとして指定します。一部の名前では大文字と小文字が区別されます。
次の表に特殊なケースを示します。
指定したパラメーター | 結果 |
---|---|
'ObjectParameters' | 指定したオブジェクトのパラメーター名を個別のフィールドとする構造体配列。 |
'DialogParameters' | ブロック ダイアログ ボックスのパラメーター名を個別のフィールドとする構造体配列。ブロックにマスクがある場合は代わりにマスク パラメーターを返します。 |
'ParameterStruct' | マスク ブロックのパラメーター名とその現在の値を含む構造体。 |
パラメーター、プロパティ、または属性の詳細については、対応するリファレンス ページのプログラムでの使用に関する情報を参照してください。以下に例を示します。
モデル — コンフィギュレーション パラメーターのリファレンス ページを参照してください。
ブロック — 共通ブロック プロパティおよびブロックのリファレンス ページを参照してください。
端子 — 信号プロパティツールのリファレンス ページを参照してください。
端子の要素 — In Bus Element ブロックおよび Out Bus Element ブロックのリファレンス ページを参照してください。
例: 'ObjectParameters'
例: 'Solver'
例: 'SimulationCommand'
例: 'Position'
例: 'NameLocation'
データ型: char
| string
出力引数
パラメーターの値。パラメーター タイプで決まる形式で返されます。複数のオブジェクトを指定する場合、出力は 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 より前に導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)