Main Content

set_param

Simulink パラメーターの値を設定

説明

set_param(object,parameter1,value1,...,parameterN,valueN) は、object で指定されたターゲット オブジェクトについて、指定された Simulink® パラメーター parameter を指定された値 value に設定します。ターゲット オブジェクトは、モデル、サブシステム、ライブラリ、ブロック、ライン、端子、またはバス要素端子の要素のいずれかになります。

ターゲット オブジェクトの複数のパラメーターの値を設定するには、関数 set_param を各パラメーターについて別々に呼び出す代わりに、名前と値の引数を複数指定して 1 回呼び出します。1 つの関数呼び出しで複数のパラメーターを設定すると、パラメーターの評価が 1 回だけで済むため効率的です。いずれかのパラメーターの名前または値が無効な場合、関数はどのパラメーターも設定しません。

すべて折りたたむ

次の入力引数を指定して関数 set_param を使用することで、ブロック パラメーターの値を設定できます。

  • ブロック ハンドル、またはブロック名を含む絶対ブロック パス (たとえば、'myModel/mySubsystem/myblock')

  • パラメーター名

  • パラメーターに代入する新しい値

ブロック パスを取得する方法の詳細については、ブロックのパスおよび名前の取得を参照してください。

パラメーター名を取得する方法の詳細については、ブロック パラメーター名の取得を参照してください。

この例では、Alpha-sensor Low-pass Filter という名前の Transfer Function ブロックで指定されている伝達関数の係数を設定します。

  • ブロックは、slexAircraftExample モデルの Controller サブシステムにあります。

  • 伝達関数の分子の係数は、Numerator パラメーターに保存されます。伝達関数の分母の係数は、Denominator パラメーターに保存されます。

  • 分子に割り当てる新しい値は 1.2 です。分母に割り当てる新しい値は [0.8*Tal,1] です。ここで、Tal は変数です。

例を開きます。次に、slexAircraftExample モデルを読み込みます。

mdl = 'slexAircraftExample';
load_system(mdl)

伝達関数の係数を設定します。

path = [mdl,'/Controller/Alpha-sensor Low-pass Filter'];
set_param(path,'Numerator','1.2','Denominator','[0.8*Tal,1]');

Numerator パラメーターおよび Denominator パラメーターの値を確認するには、関数 get_param を使用します。

num = get_param(path,'Numerator')
num = 
'1.2'
denom = get_param(path,'Denominator')
denom = 
'[0.8*Tal,1]'

ブロック パスが長く、複数のパラメーターを設定する場合は、ブロック ハンドルの使用を検討してください。

次の入力引数を指定して関数 set_param を使用することで、ブロック パラメーターの値を設定できます。

  • ブロック ハンドル、またはブロック名を含む絶対ブロック パス (たとえば、'myModel/mySubsystem/myblock')

  • パラメーター名

  • パラメーターに代入する新しい値

ブロック パスを取得する方法の詳細については、ブロックのパスおよび名前の取得を参照してください。

パラメーター名を取得する方法の詳細については、ブロック パラメーター名の取得を参照してください。

この例では、Alpha-sensor Low-pass Filter という名前の Transfer Function ブロックで指定されている伝達関数の係数を設定します。

  • ブロックは、slexAircraftExample モデルの Controller サブシステムにあります。

  • 伝達関数の分子の係数は、Numerator パラメーターに保存されます。伝達関数の分母の係数は、Denominator パラメーターに保存されます。

  • 分子に割り当てる新しい値は 1.2 です。分母に割り当てる新しい値は [0.8*Tal,1] です。ここで、Tal は変数です。

例を開きます。次に、関数 getSimulinkBlockHandle を使用してブロック ハンドルを取得します。ブロック ハンドルの取得とモデルの読み込みを同時に行うには、関数 getSimulinkBlockHandle の 2 番目の引数に true を指定します。

path = 'slexAircraftExample/Controller/Alpha-sensor Low-pass Filter';
h = getSimulinkBlockHandle(path,true)
h = 73.0027

パラメーター値を設定するには、ハンドルを使用してブロックを指定します。ハンドルには double が含まれています。MATLAB® で表示されるよりも多くの桁を指定しなければならない場合があるため、ハンドルの数値を手動で入力しようとしないでください。代わりにハンドルを変数に代入し、その変数の名前を使用してブロックを指定します。

set_param(h,'Numerator','1.2','Denominator','[0.8*Tal,1]');

次の入力引数を指定して関数 set_param を使用することで、モデル パラメーターの値を設定できます。

  • モデル名

  • パラメーター名

  • パラメーターに代入する新しい値

モデル パラメーター名を取得する方法の詳細については、モデル パラメーター名の取得を参照してください。

例を開きます。次に、f14 モデルを読み込みます。

load_system('f14')

f14 モデルのソルバーを ode15s に、終了時間を 3000 秒に設定します。

set_param('f14','Solver','ode15s','StopTime','3000')

Solver パラメーターおよび StopTime パラメーターの値を確認するには、関数 get_param を使用します。

solver = get_param('f14','Solver')
solver = 
'ode15s'
stoptime = get_param('f14','StopTime')
stoptime = 
'3000'

例を開きます。次に、f14 モデルを開きます。

open_system('f14')

Pilot という名前の Signal Generator ブロックのハンドルを取得します。

h = getSimulinkBlockHandle('f14/Pilot');

ブロックの位置を取得します。

pos = get_param(h,'Position')
pos = 1×4

    15    18    55    42

関数は、ピクセル単位の座標のベクトル [left top right bottom] としてブロック位置を返します。

ブロックを右に移動します。

pos = [pos(1)+20 pos(2) pos(3)+20 pos(4)];
set_param(h,'Position',pos);

ブロックを上に移動します。

pos = [pos(1) pos(2)-20 pos(3) pos(4)-20];
set_param(h,'Position',pos);

ブロックを水平に伸張します。

pos = [pos(1)/4 pos(2) pos(3) pos(4)];
set_param(h,'Position',pos);

例を開きます。次に、f14 モデルを開きます。

open_system('f14')

モデルには、Pilot という名前の Signal Generator ブロックが含まれています。ブロック名をブロックの上部に移動します。

set_param('f14/Pilot','NameLocation','top')

入力引数

すべて折りたたむ

オブジェクトの名前、パス、またはハンドル。文字ベクトル、string スカラー、または数値スカラーとして指定します。

ターゲット オブジェクトを指定する方法はタイプによって異なります。

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

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

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

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

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

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

  • バス要素端子の要素 — 要素のラベルが付いたモデル コンポーネントのブロック パス。要素は、最上位バス、入れ子のバス、信号、メッセージなど、任意の端子の要素にすることができます。

例: 'vdp/Mu'

例: 'mymodel/Subsystem1/Out1.nonsinusoidal.saw'

ヒント

  • 同じブロックに対する set_param を複数回呼び出す場合は、数値ハンドルを使用してブロックを指定します。この方法は、set_param でブロックの絶対パスを使用するよりも効率的です。getSimulinkBlockHandle を使用してブロック ハンドルを取得します。

  • 通常 MATLAB® に表示されるよりも多くの桁を指定しなければならないため、ハンドルの数値 (5.007 など) を手動で指定しようとしないでください。ハンドルを変数に代入し、その変数の名前を使用します。

データ型: char | string | double

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

パラメーター、プロパティ、または属性の詳細については、対応するリファレンス ページのプログラムでの使用に関する情報を参照してください。次に例を示します。

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

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

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

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

ターゲット オブジェクトのすべてのパラメーターを取得するには、'ObjectParameters' オプションを指定して関数 get_param を使用します。返されるパラメーターに内部使用専用のパラメーターが含まれることもあります。

例: 'Solver'

例: 'SimulationCommand'

例: 'Position'

例: 'NameLocation'

データ型: char | string

パラメーターの値。パラメーター タイプで決まる形式で指定します。一部のパラメーター値では大文字と小文字が区別されます。多くの場合、値は文字ベクトルか string スカラーですが、数値スカラーや配列など他の型になる場合もあります。

多くのブロック パラメーターの値は、文字ベクトルまたは string スカラーとして指定されます。例外としては、ベクトルとして指定される Position と任意のデータ型にできる UserData の 2 つがあります。

制限

  • matlab -nodisplay を使用してセッションを開始した場合は、set_param を使用してシミュレーションを実行することはできません。-nodisplay モードは set_param 使用したシミュレーションをサポートしていません。代わりに関数 sim を使用します。

  • 関数 set_param を使用してブロックまたは信号の名前を変更する場合、空の名前、改行文字のみが含まれている名前、および先頭または末尾が / の名前は無効です。

ヒント

MATLAB ワークスペースでパラメーターを設定した後にモデル内の変更を確認するには、ブロック線図を更新します。

set_param(model,'SimulationCommand','Update')

バージョン履歴

R2006a より前に導入