Main Content

fastRestartForLinearAnalysis

線形解析の高速リスタート

説明

fastRestartForLinearAnalysis(model,'on') は、線形解析の高速リスタートを 'on' にして、1 回のコンパイル ワークフロー用に model を準備します。コンパイルを実行する関数がいったん呼び出されると、関数が実行を終了した後もモデルはコンパイルされたままになります。その後は、追加のコンパイルを行わなくても、コンパイルを実行する関数を呼び出すことができます。コンパイルを実行する関数の以降の呼び出しで線形解析ポイントまたはブロック置換が変更される場合、モデルは再コンパイルされます。

fastRestartForLinearAnalysis(model,'on',Name,Value) は、1 つ以上の Name,Value ペア引数で指定された追加オプションを指定して、1 回のコンパイル ワークフロー用に model を準備します。

fastRestartForLinearAnalysis(model,'off') は、線形解析の高速リスタートをオフにしてモデル パラメーターを元の値に戻します。Simulink® では、コンパイルされた状態にある model を閉じることはできません。model を閉じるために線形解析の高速リスタートをオフにするには、この構文を使用します。

コンパイルされた Simulink モデルの上部に表示されるリンクをクリックして fastRestartForLinearAnalysis をオフにすることもできます。詳細については、ヒントを参照してください。

すべて折りたたむ

閉ループのエンジン速度制御モデルの平衡化と線形化を行います。線形解析の高速リスタートを使用して、パラメーターのループ処理におけるモデルのコンパイル回数を減らします。

エンジン速度の制御モデルを開いて線形化のための解析ポイントを取得します。これにより、findop の最初の呼び出しと linearize の間の再コンパイルが回避されます。

model = 'scdspeedctrl';
open_system(model)
io = getlinio(model);
fopt = findopOptions('DisplayReport','off');

ベース ワークスペース変数 kp および ki を使用するように PI コントローラーを設定します。

block = [model,'/PID Controller'];
set_param(block,'P','kp');
set_param(block,'I','ki');

変化させるパラメーターのグリッドを作成します。

vp = 0.0005:0.0005:0.003;
vi = 0.0025:0.0005:0.005;
[KP,KI] = ndgrid(vp,vi);
N = numel(KP);
sz = size(KP);

ベース ワークスペース変数 kp および ki を初期化します。

kp = KP(1);
ki = KI(1);

fastRestartForLinearAnalysis をオンにし、io を使用して解析ポイントを指定します。

fastRestartForLinearAnalysis(model,'on','AnalysisPoints',io)

ループ内で線形解析を実行します。線形解析の高速リスタートがオンの場合、findop を呼び出すと、更新されたコントローラーのパラメーターがモデルに送信されます。

ops = operspec(model); % operating point specifications
for i = N:-1:1
    kp = KP(i);
    ki = KI(i);
    op = findop(model,ops,fopt); % trim the model
    [j,k] = ind2sub(sz,i);
    sysFastRestartLoop(:,:,j,k) = linearize(model,io,op); % linearize the model
end

fastRestartForLinearAnalysis をオフにしてモデルを閉じます。

fastRestartForLinearAnalysis(model,'off')
bdclose(model)

線形解析の高速リスタートがオンの場合、コンパイルを実行する関数を呼び出したときに、状態の初期条件に自動的に変更が適用されません。そのため、パラメーターやワークスペース変数を使用するのではなく、操作点オブジェクトを使用して初期状態を構成しなければなりません。

モデルを開き、線形解析ポイントを作成します。

mdl = 'magball';
open_system(mdl)
io(1) = linio([mdl '/Controller'],1,'input');
io(2) = linio([mdl '/Magnetic Ball Plant'],1,'openoutput');

ワークスペース変数 hInitial を初期条件として使用するようにボールの高さを構成します。

set_param([mdl '/Magnetic Ball Plant/height'],'InitialCondition','hInitial')

線形解析の高速リスタートをオンにします。

fastRestartForLinearAnalysis(mdl,'on')

異なる高さの初期値を使用してモデルを線形化します。

hInitial = 0.05;
sys1 = linearize(mdl,io);
hInitial = 0.1;
sys2 = linearize(mdl,io);

線形化されたモデルで周波数応答が同じになっています。したがって、hInitial が変わっても初期条件は更新されません。

bode(sys1,'b',sys2,'r--')
legend('sys1','sys2')

Figure contains 2 axes objects. Axes object 1 with title From: Controller To: Magnetic Ball Plant contains 2 objects of type line. These objects represent sys1, sys2. Axes object 2 contains 2 objects of type line. These objects represent sys1, sys2.

高速リスタートが有効な場合に初期状態を変えるには、代わりに操作点オブジェクトを変更しなければなりません。モデルの初期条件に基づく操作点を作成します。

op = operpoint(mdl);

初期条件に応じて操作点を変更し、モデルを線形化します。

op.States(5).x = 0.05;
sys3 = linearize(mdl,io,op);
op.States(5).x = 0.1;
sys4 = linearize(mdl,io,op);

線形化されたモデルで周波数応答が異なっています。したがって、操作点オブジェクトが変わると初期条件が変わります。

bode(sys3,'b',sys4,'r--')
legend('sys3','sys4')

Figure contains 2 axes objects. Axes object 1 with title From: Controller To: Magnetic Ball Plant contains 2 objects of type line. These objects represent sys3, sys4. Axes object 2 contains 2 objects of type line. These objects represent sys3, sys4.

線形解析の高速リスタートをオフにし、モデルを閉じます。

fastRestartForLinearAnalysis(mdl,'off')
bdclose(mdl)

入力引数

すべて折りたたむ

Simulink モデル名。文字ベクトル、string、slTuner オブジェクト、または slLinearizer オブジェクトとして指定します。モデルは現在の作業フォルダー内または MATLAB® パス上になければなりません。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: ...,'UseBusSignalLabels','on'

入力、出力、および開始点を含む解析ポイント セット。AnalysisPoints と、線形化 I/O オブジェクトまたは線形化 I/O オブジェクトのベクトルで構成されるコンマ区切りのペアとして指定します。AnalysisPoints を作成するには次を行います。

  • linio を使用して入力、出力および開始点を定義します。

  • 入力、出力および開始点が Simulink モデルで指定されている場合、getlinio を使用してモデルからこれらの点を抽出します。

AnalysisPoints 内の各線形化 I/O オブジェクトは、Simulink モデル model またはモデルの階層構造におけるノーマル モードのモデル参照に対応していなければなりません。

コンパイルを実行する関数の以降の呼び出しで線形解析ポイントが変更される場合、モデルは再コンパイルされます。

線形化の入力、出力、開始点の指定の詳細については、モデルの一部を線形化するよう指定を参照してください。

ブロックおよびモデル サブシステムの代替の線形化。BlockSubstitutions と次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 構造体配列

  • string 配列

  • 文字ベクトル

  • 文字ベクトルの cell 配列

BlockSubstitutions を使用して、ブロックまたはサブシステムのカスタム線形化を指定します。たとえば、不連続性や Triggered Subsystem のあるブロックのように解析的な線形化をもたないブロックに線形化を指定できます。

コンパイルを実行する関数の以降の呼び出しでブロック置換が変更される場合、モデルは再コンパイルされます。

線形化されたモデル内で I/O のラベル付けにバス信号チャネルの番号または名前のどちらを使用するかを示すフラグ。UseBusSignalLabels と次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'off' — バス信号チャネル番号を使用して、線形化されたモデルのバス信号の I/O にラベルが付けられます。

  • 'on' — バス信号名を使用して、線形化されたモデルのバス信号の I/O にラベルが付けられます。I/O ポイントが次に示すブロックの出力ポイントにある場合、バス信号名が結果に表示されます。

    • バス オブジェクトを含んでいる、ルートレベルの Inport ブロック

    • Bus Creator ブロック

    • ソースが Bus Creator ブロックの出力まで遡って追跡するサブシステム ブロック

    • ソースがバーチャルまたは非バーチャル サブシステムの境界のみのパス スルーにより、ルートレベルの Inport まで遡って追跡するサブシステム ブロック

ヒント

  • Simulink では、コンパイルされた状態にある model を閉じることはできません。model を閉じるには、線形解析の高速リスタートをオフにします。fastRestartForLinearAnalysis は次のいずれかの方法でオフにすることができます。

    • 構文 fastRestartForLinearAnalysis(model,'off') を使用。

    • Simulink モデルの上部に表示されるリンクをクリック。

  • 線形解析の高速リスタートがオンの場合、コンパイルを実行する関数を呼び出したときに、状態の初期条件に自動的に変更が適用されません。そのため、パラメーターやワークスペース変数を使用するのではなく、操作点オブジェクトを使用して初期状態を構成しなければなりません。詳細については、複数の状態の初期条件を使用したモデルの線形化を参照してください。

バージョン履歴

R2019a で導入