Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

時間領域における線形化の検証

以下の例では、非線形モデルと線形化モデルのシミュレーションされた出力を比較することによって線形化の結果を検証する方法を説明します。

Simulink® モデルの線形化。以下に例を示します。

sys = 'watertank';
load_system(sys)
sys_io(1) = linio('watertank/PID Controller',1,'input');
sys_io(2) = linio('watertank/Water-Tank System',1,'openoutput');
opspec = operspec(sys);
op = findop(sys,opspec,findopOptions('DisplayReport','off'));
linsys = linearize(sys,op,sys_io);

モデル線形化器でモデルを線形化した場合は、線形モデルを MATLAB® ワークスペースにエクスポートしなければなりません。[線形解析ワークスペース] でそうするには、モデルを右クリックし、[MATLAB ワークスペースへのエクスポート] を選択します。

線形化の時間領域検証では、frest.createStepを使用してステップ信号を作成します。

input = frest.createStep(...
    'Ts',0.1,...T
    'StepTime',1,...
    'StepSize',1e-5,...
    'FinalTime',500);

入力信号を使用して Simulink モデルをシミュレートします。simout は、非線形モデルのシミュレートされた出力です。

[~,simout] = frestimate(sys,op,sys_io,input);

線形モデル sys をシミュレートし、線形および非線形の Simulink モデルの時間領域応答を比較します。非線形モデルと線形化されたモデルのステップ応答は近接しています。これは、線形化が正確であることを実証しています。

frest.simCompare(simout,linsys,input)
legend('FRESTIMATE results with Custom input',...
			'Linear simulation of linsys with Custom input',...
			'Location','SouthEast')

ステップ信号の振幅を 1.0e-5 から 1 に上げます。

input = frest.createStep(...
    'Ts',0.1,...
    'StepTime',1,...
    'StepSize',1,...
    'FinalTime',500);

入力信号の振幅を上げながら周波数応答の推定を繰り返し行い、この時間応答と正確な線形化の結果を比較します。

[~,simout2] = frestimate(sys,op,sys_io,input);

frest.simCompareを使用して、この時間応答プロットと正確な線形化の結果を比較します。正確な線形化を使用して取得された線形システムのステップ応答は、大きな振幅の入力信号を使用して取得された推定周波数応答のステップ応答と一致しません。正確な線形化を使用して取得した線形モデルでも、指定した操作点から逸脱するほど振幅が大きいと、完全な非線形モデルとは一致しません。

frest.simCompare(simout2,linsys,input)
legend('FRESTIMATE results with Custom input',...
			'Linear simulation of linsys with Custom input',...
			'Location','SouthEast')