Main Content

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

invfreqs

周波数応答データからの連続時間フィルター パラメーターの同定

説明

[b,a] = invfreqs(h,w,n,m) では、伝達関数 h の実数の分子係数ベクトル b および分母係数ベクトル a が返されます。

[b,a] = invfreqs(h,w,n,m,wt) では、wt を使用して周波数に対する近似誤差に重みが付けられます。

[b,a] = invfreqs(___,iter) は、数値を使用した反復手法により最も適合する線形システムを探索することによって、結果として得られる線形システムの安定性を保証するアルゴリズムを提供します。この構文には、前の構文の入力引数を任意に組み合わせて含めることができます。

[b,a] = invfreqs(___,tol) は、tol を使用して反復アルゴリズムの収束性を求めます。

[b,a] = invfreqs(___,'trace') では、反復の経過報告がテキストで表示されます。

[b,a] = invfreqs(h,w,'complex',n,m,___) では、複素フィルターが作成されます。この場合、対称性は強制されず、周波数は -π ~ π の間のラジアン単位で指定されます。

すべて折りたたむ

簡単な伝達関数を周波数応答データに変換し、その後、元のフィルター係数に戻します。

a = [1 2 3 2 1 4];
b = [1 2 3 2 3];

[h,w] = freqs(b,a,64);
[bb,aa] = invfreqs(h,w,4,5)
bb = 1×5

    1.0000    2.0000    3.0000    2.0000    3.0000

aa = 1×6

    1.0000    2.0000    3.0000    2.0000    1.0000    4.0000

bb および aa は、b および a とそれぞれ等価です。しかし、aa には正の実数部をもつ極があるため、システムが不安定になります。bbaa の極を表示します。

zplane(bb,aa)

Figure contains an axes object. The axes object with title Pole-Zero Plot, xlabel Real Part, ylabel Imaginary Part contains 3 objects of type line. One or more of the lines displays its values using only markers

invfreqs の反復アルゴリズムを使用して、システムに対する安定近似を求めます。

[bbb,aaa] = invfreqs(h,w,4,5,[],30)
bbb = 1×5

    0.6816    2.1015    2.6694    0.9113   -0.1218

aaa = 1×6

    1.0000    3.4676    7.4060    6.2102    2.5413    0.0001

新しい極をプロットして、システムが安定していることを検証します。

zplane(bbb,aaa)

Figure contains an axes object. The axes object with title Pole-Zero Plot, xlabel Real Part, ylabel Imaginary Part contains 3 objects of type line. One or more of the lines displays its values using only markers

実験室で収集した振幅データと位相データをシミュレートする 2 つのベクトル magphase を生成します。さらに、周波数のベクトル w も生成します。

rng('default')

fs = 1000;
t = 0:1/fs:2;
mag = periodogram(sin(2*pi*100*t)+randn(size(t))/10,[],[],fs);
phase = randn(size(mag))/10;
w = linspace(0,fs/2,length(mag))';

invfreqs を使用して、このデータを連続時間の伝達関数に変換します。結果をプロットします。

[b,a] = invfreqs(mag.*exp(1j*phase),w,2,2,[],4);

freqs(b,a)

Figure contains 2 axes objects. Axes object 1 with xlabel Frequency (rad/s), ylabel Phase (degrees) contains an object of type line. Axes object 2 with xlabel Frequency (rad/s), ylabel Magnitude contains an object of type line.

入力引数

すべて折りたたむ

周波数応答。ベクトルとして指定します。

h が計算される角周波数。ベクトルとして指定します。

分子多項式と分母多項式の目的の次数。正の整数スカラーとして指定します。

データ型: single | double

重み係数。ベクトルとして指定します。wt は、w と同じ長さの重み係数のベクトルです。

データ型: single | double

検索アルゴリズムの反復回数。正の実数スカラーとして指定します。iter パラメーターでは、アルゴリズムが解に収束するか、反復回数が iter に達するかのいずれかが初めて起こったときに、反復を終了するよう invfreqs に指示します。

許容誤差。スカラーとして指定します。invfreqs では、修正した勾配ベクトルのノルムが tol 未満となるときが収束と定義されています。

すべてが 1 の重みベクトルを取得するには、次のステートメントを使用します。

invfreqs(h,w,n,m,[],iter,tol)

出力引数

すべて折りたたむ

伝達関数の係数。ベクトルとして返されます。ba によるこの伝達関数式は次になります。

H(s)=B(s)A(s)=b(1)sn+b(2)sn1++b(n+1)a(1)sm+a(2)sm1++a(m+1)

例: b = [1 3 3 1]/6a = [3 0 1 0]/3 は、正規化された 3 dB の周波数 0.5π ラジアン/サンプルをもつ 3 次のバタワース フィルターを指定します。

データ型: double | single
複素数のサポート: あり

ヒント

高周波数を使用して高次モデルを作成するときには、a および b に良い条件の値を取得するために、w に存在する最も高い周波数の 1/2 などの係数で除算して周波数をスケーリングすることが重要です。これは、時間の再スケーリングと対応します。

アルゴリズム

既定の設定では、invfreqs では方程式誤差法を使用して、データに対する最適なモデルが同定されます。これは、以下の式で ba を求めます。

minb,ak=1nwt(k)|h(k)A(w(k))B(w(k))|2

ここでは、線形方程式系を作成し、MATLAB®\ 演算子で解くことにより、b と a を求めます。ここでは、A(w(k)) と B(w(k)) は、それぞれ周波数 w(k) における多項式 ab のフーリエ変換です。n は周波数点 (hw の長さ) の数です。このアルゴリズムは、Levi (参考文献[1]) に基づいています。この文献には、いくつかの変形が提案されていますが、高周波数に対する重み関数 wt の考慮があまりなされていません。

優れた (出力誤差) アルゴリズムでは、初期推定値として最初のアルゴリズムの出力が使用され、反復探索 ([2] 参照) に対して、減衰付きガウス-ニュートン法が使用されます。この方法では、実際の周波数応答点と希望の周波数応答点の間の二乗誤差の重み付き和を最小化するという、直接的な問題を解けます。

minb,ak=1nwt(k)|h(k)B(w(k))A(w(k))|2

参照

[1] Levi, E. C. “Complex-Curve Fitting.” IRE Trans. on Automatic Control. Vol. AC-4, 1959, pp. 37–44.

[2] Dennis, J. E., Jr., and R. B. Schnabel. Numerical Methods for Unconstrained Optimization and Nonlinear Equations. Englewood Cliffs, NJ: Prentice-Hall, 1983.

バージョン履歴

R2006a より前に導入