メインコンテンツ

set_param

R2026b

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

説明

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

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

プログラムでシミュレーションを操作するには、set_param 関数で名前と値の引数 SimulationCommand を使用します。詳細については、プログラムによるシミュレーションの実行ページのシミュレーション コマンドの実行によるシミュレーションの操作セクションを参照してください。

多くのパラメーターでは、指定した値が現在の値と異なるかどうかに関わらず、set_param を実行する方が、値を比較して値が異なる場合にのみ関数を実行することよりも高速になります。

set_param 関数を使用してパラメーター値を変更すると、パラメーターでモードのみを変更する場合でも、モデルは変更未保存 (ダーティ) になります。たとえば、LabelModeActiveChoice パラメーターの値を設定してバリアント制御モードを変更すると、モデルは変更未保存 (ダーティ) になります。

例

例

すべて折りたたむ

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

値を設定するには、次の 3 つの入力が必要です。

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

blockPath = "myModel/mySubsystem/myBlock";

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

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

許容される値の型については、パラメーターのドキュメンテーションの「プログラムでの使用」セクションを確認してください。この場合、新しい値は string または文字ベクトルとして表現しなければなりません。

パラメーター値を設定します。

gainValue = get_param(blockPath,Gain="5");

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

h = getSimulinkBlockHandle(blockPath);

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

gainValue = set_param(h,Gain="5");

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

値を設定するには、次の 3 つの入力が必要です。

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

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

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

この例では、Transfer Fcn のページでパラメーター名を確認します。伝達関数の分子係数を格納するパラメーターのプログラム上の名前は、Numerator です。

許容される値の型については、パラメーターのドキュメンテーションの「プログラムでの使用」セクションを確認してください。この場合、新しい値は string または文字ベクトルとして表現しなければなりません。

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

set_param(blockPaths,Numerator="1");

myModel という名前の読み込み済みのモデルがあるとします。モデルのソルバーを ode15s に、終了時間を 3000 秒に設定します。

値を設定するには、次の 3 つの入力が必要です。

この例では、モデル名と新しい値が既にわかっています。

設定するパラメーターのプログラム上の名前を取得します。そのための 1 つの方法として、ドキュメンテーションを確認できます。モデルに対するモデル コンフィギュレーション パラメーターの設定のページを開きます。「コンフィギュレーション ペイン」セクションに移動します。「コンフィギュレーション ペイン」セクションで、目的のパラメーターを設定できる [コンフィギュレーション パラメーター] ダイアログ ボックスのペインに関するドキュメンテーション ページへのリンクをクリックします。開いたページで、目的のパラメーターに関するドキュメンテーション ページへのリンクをクリックします。次に、「プログラムでの使用」セクションでプログラム上の名前を確認します。

この例では、ソルバーおよび終了時間のパラメーターを探します。モデルのソルバーおよび終了時間は、[コンフィギュレーション パラメーター] ダイアログ ボックスの [ソルバー] ペインで設定できます。ドキュメンテーションの「コンフィギュレーション ペイン」セクションで、「[ソルバー] ペイン」のリンクをクリックします。開いたページで、「ソルバー」および「終了時間」のリンクをクリックし、それぞれの「プログラムでの使用」セクションを確認します。パラメーターのプログラム上の名前は、Solver および StopTime です。

許容される値の型については、パラメーターのドキュメンテーションの「プログラムでの使用」セクションを確認してください。この場合、新しい値は両方とも string または文字ベクトルとして表現しなければなりません。

ソルバーおよび終了時間を設定します。

set_param("myModel",Solver="ode15s",StopTime="3000")

入力引数

すべて折りたたむ

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

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

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

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

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

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

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

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

ハンドルとパスを取得する方法の詳細については、Get Handles and Pathsを参照してください。ハンドルは数値スカラーまたは数値ベクトルの形式に設定します。名前とパスは string、string 配列、文字ベクトル、または文字ベクトルの cell 配列の形式に設定します。共通のパラメーターをもつ複数のオブジェクトを指定するには、文字ベクトルの cell 配列、string 配列、またはハンドルの配列を使用します。指定したすべてのオブジェクトに指定したパラメーターが含まれていなければなりません。

例: "myModel/mySubsystem/myBlock"

ヒント

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

  • ハンドルの値を出力すると、MATLAB® コマンド ウィンドウに数値が表示されます。コマンド ウィンドウにはすべての桁が表示されるわけではなく、またハンドルは Simulink® セッション間で保持されないため、表示された数値を使用しようとしないでください。代わりに、ハンドルの値を変数に格納し、その変数を使用してターゲット オブジェクトを指定します。

データ型: double | string | character vector

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

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

ターゲット オブジェクトのすべてのパラメーターを取得するには、'ObjectParameters' オプションを指定して関数 get_param を使用します。

例: "SolverName"

例: "SimulationCommand"

例: "Position"

例: "NameLocation"

データ型: string | character vector

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

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

制限

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

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

バージョン履歴

R2006a より前に導入