線形離散時間システムモデルのシミュレーション
システムモデル
2次の線形離散時間システムを考える:
Z変換による表現
伝達関数
部分分数展開
MATLABでの数値計算
MATLABでディジタル信号を扱う時に、そのまま差分方程式を使える。Z変換などが要らない。
MATLABシミュレーションコード
初期設定
clear
close all
set(0,'DefaultAxesFontName','Times New Roman')
set(0,'DefaultAxesFontSize',12)
%--------------------------------------------------------------------
% 同定ゼミ宿題pdf p.13 線形離散時間システムモデルのシミュレーション
% 4/13 by YANG
%---------------------------------------------------------------------
パラメータ設定
% 初期パラメータ
Tmax = 10; % シミュレーション時間
samp = 0.01; % サンプリング周期
n = Tmax/samp; % サンプル数
u = rand(1,n+1); % 入力(一様乱数)
NSR = 0.0; % 雑音信号比(Noise Signal Ratio)
% NSR 0, 0.1, 0.2で比較可能
% システムパラメータ
a1 = -1.5;
a2 = 0.7;
b1 = 1.0;
b2 = 0.5;
配列初期化
t = zeros(1, n+1); % 時間配列
x = zeros(1, n+1); % 真の出力
y = zeros(1, n+1); % 観測値(雑音付き)
システム応答計算
% 真の出力の計算
for k = 3:n+1
t(k) = (k-1) * samp;
x(k) = -a1*x(k-1) - a2*x(k-2) + b1*u(k-1) + b2*u(k-2);
end
観測雑音の追加
% ゼロ平均のガウス分布乱数(正規分布)
mu = 0; % 平均値
sigma = NSR * std(x); % 標準偏差 NSR = sigma/std(x)
v = sigma * randn(1,n+1) + mu;
% 観測値の計算
for k = 3:n+1
y(k) = x(k) + v(k);
end
結果のプロット
subplot(2,2,1); plot(t,u); title('入力信号 u(t)');
subplot(2,2,2); plot(t,x); title('真の出力 x(t)');
subplot(2,2,3); plot(t,y); title('観測出力 y(t)');
subplot(2,2,4); plot(t,v); title('観測雑音 v(t)');
シミュレーション結果の解析
雑音信号比(NSR)の影響
- NSR = 0.0: 雑音なし、理想的な条件
- NSR = 0.1: 10%の雑音レベル
- NSR = 0.2: 20%の雑音レベル
雑音信号比とは
NSR(Noise Signal Ratio)は観測雑音の標準偏差と真の出力信号の標準偏差との比である:
システムの安定性
システムの極は次の方程式の解:
複素共役極:
極の大きさ:
安定性の確認
すべての極が単位円内にあるため、システムは安定である。
応用例
このシミュレーションは以下の用途に応用できる:
- システム同定: パラメータの推定
- 雑音の影響評価: 異なるNSRレベルでの性能比較
- 制御器設計: システム特性の理解
- フィルタ設計: 雑音除去手法の検討
実装のポイント
初期値の設定
- 配列の初期化で
zeros
を使用 - ループは
k=3
から開始(過去2サンプルが必要)
雑音生成
randn
でガウス分布乱数生成std(x)
で真の出力の標準偏差を計算- NSRによって雑音レベルを調整
プロット設定
subplot
で複数のグラフを同時表示- フォント設定で可読性を向上
- 日本語タイトルで理解しやすさを向上
まとめ
本シミュレーションでは:
- 差分方程式: 離散時間システムの直接実装
- 雑音モデル: 実際的な観測条件のシミュレーション
- 可視化: 入力、出力、雑音の関係の理解
- パラメータ影響: NSRによる性能評価
これらの要素は、システム同定や制御系設計における基本的な数値実験の基盤となる。