周波数応答・周波数伝達関数とは?直感的イメージと使い方を解説!

周波数応答とボード線図

周波数応答は、インパルス応答・ステップ応答と並び、システムの特性を分析するのに非常に有用なツールですが、初めて学ぶ際はイメージがわきにくいかもしれません。

このページでは、周波数応答・周波数伝達関数の直感的イメージと使い方について解説します。

このページのまとめ
  • sin波状の入力に対するシステムの応答のことを、周波数応答と呼ぶ
  • 「様々な周波数(速さ)のsin波に対し、システムがどう反応するか」を周波数特性と呼ぶ
  • 伝達関数$G(s)$に$j\omega$を代入した$G(j\omega)$を周波数伝達関数と呼び、周波数特性はこれから計算できる
  • 信号を「速さ成分」に切り分けて個別に分析できるのが、周波数解析の強み
スポンサーリンク

システムの周波数応答と周波数特性

安定でプロパーなシステム(※)にsin波を入力すると、定常状態の出力も同じ周波数のsin波になることが知られています。ただし、下図のように振幅と位相は変化する場合がほとんどです。

周波数応答の概要図

位相の変化は、「信号の出力タイミングの変化」だと思えばOKです。例えば上の図では、位相の変化によってsin波のピークが後ろ方向にずれているので、信号の出力が遅れていることになります。

上図のような、sin波の入力に対する定常応答のことを、周波数応答と呼びます。また、「システムに様々な周波数のsin波を入力したとき、出力の振幅と位相がどのように変化するか」という特性のことを、周波数特性と呼びます。

様々なsin波を入力した際の周波数応答を表す図

※「プロパーなシステム」とは、伝達関数が「分子の次数≦分母の次数」を満たすシステムのことです。制御工学で扱う伝達関数のほとんどはプロパーです。詳しくはこちらのページをご覧ください。

周波数応答・周波数特性の具体的イメージ

…とはいっても、あまりイメージがわきにくいですよね。ここからは、具体例を通じて直感的イメージについて説明していきます。

基本イメージ

例として、ロボットアームの制御を考えます。ロボットアームは関節角度指令値を入力として受け取り、それに応じた関節角度(動作)を出力するとします。

ロボットアームのブロック線図

このロボットアームの周波数応答を調べてみましょう。まず、指令値としてゆっくりとしたsin波(周波数の低いsin波)を入れてみます。このときの入出力波形を重ねてプロットすると、次のようになります。

低周波入力に対する周波数応答の例

指令値とほぼ同じように、角度もsin波状に変化していますね。

では、だんだん指令値を速くする(周波数を高くする)とどうなるでしょうか?当然どこかのタイミングで、ロボットが指令値の速さについていけなくなりますよね。このときの応答を詳しく見てみましょう。

中周波入力に対する周波数応答の例

まず、角度が指令値の速さについていけなくなり、位相に遅れが生じていることが見て取れます。さらに、角度が指令値のピークに到達する前に逆方向への指令値が入力されるので、角度の振幅が指令値に対して小さくなっていることも分かります。これが、sin波の位相と振幅が変化するイメージです。一方で、sin波の周波数はそのままとなります。

最後に、指令値を超速くした場合(周波数を超高くした場合)を見てみます。

高周波入力に対する周波数応答の例

ロボットの反応速度よりも大幅に速い指令値が入っているため、角度の振幅がほぼ0、つまりほぼ動かない状態となっていることが見て取れます。詳しく見ると位相は遅れており、周波数はそのままなのですが、そもそもロボットがほぼ動いていないので、それらの情報は無意味となっていますね。

以上より、結局周波数は「信号の変化の速さ」を表しており、周波数特性とは「システムが様々な速さの信号に対してどのように反応するか」を表したものであるとイメージすればOKです。

スポンサーリンク

sin波以外の信号に対するイメージ

ほーん。基本イメージは分かったけど、sin波の入力にしか使えないんなら汎用性は低そうだな。

と思うかもしれませんが、そんなことはありません。ここからは、sin波以外の信号に対するイメージついて詳しく説明していきます。

まず伝達関数のおさらいですが、伝達関数で表されたシステムに「異なる2つの信号の和」を入力したとき、その出力は「それぞれの信号単体に対する出力の和」となります。

$$\begin{gather}入力\ U(s) = U_1(s) + U_2(s) \quad のとき、\\\\ 出力\ Y(s) = G(s) U(s) =\ubgd{G(s) U_1(s)}{U_1(s)に}{対する出力} + \ubgd{G(s) U_2(s)}{U_2(s)に}{対する出力}\end{gather}$$

伝達関数で表されたシステムに「異なる2つの信号の和」を入力したとき、その出力は「それぞれの信号単体に対する出力の和」となることを示したブロック線図

よって、複数のsin波の和をシステムに入力すると、その出力はそれぞれのsin波に対する周波数応答の和となります。例えば先ほどのロボットアームの例にて、低周波入力と高周波入力を足し合わせた入力をロボットに与えた場合、ちょうど高周波の成分だけが消えたような出力が得られることになります。

複数のsin波の和を入力したときの周波数応答

少し話が変わりますが、フーリエ解析によると全周波数のsin波をうまいこと足し合わせれば、理論上(ほぼ)どんな波形も表現できることが知られています。全周波数を足し合わせるには無限個のsin波が必要となるため、これを表現するために下図のように横軸を周波数、縦軸をsin波の振幅&位相としたグラフが用いられることがほとんどです。(このグラフを書くのに使われるのがフーリエ変換です)

任意の信号(関数)をsin波の成分(周波数成分)に分解したイメージ図

※上図の「sin波の振幅」のグラフと同様に、縦軸が「sin波の位相」となったグラフもセットで用いられますが、スペースの都合から省略しています。以降の図でも同じです。

これらの考えを応用すると、結局どんな入力信号も無限個のsin波に分解でき、それに対するシステムの出力も、無限個のsin波それぞれに対する周波数応答の和となることが分かります。

任意の信号に対する周波数応答のイメージ図

この入出力信号を周波数の観点で見ると、下図のようにシステムによって周波数の「成分」に変化が生じていると解釈できます。

周波数領域の観点で見た、任意の信号に対する周波数応答のイメージ図

周波数は「信号の変化の速さ」でしたので、結局入力信号の「速さ成分」がそれぞれどのように変化するかを見ていることになりますね。このように、ゴチャゴチャしていた信号も「速さ成分」に切り分けて個別に分析できるのが、周波数特性を用いた解析の強みです。

上記のように、周波数特性を通じてシステムや信号を解析することを、周波数解析と呼びます。周波数解析は、古典制御ならではの非常に強力な解析手法です(つまり現代制御にはできない)。

スポンサーリンク

周波数特性の求め方

ほーん。便利なのは分かったけど、結局システムの周波数特性はどうやったら分かるの?色んなsin波を入れまくるの?めんどくさそう。

と思うかもしれません。確かに全周波数のsin波をシステムに入力し、周波数応答を全て確認するのは現実的に不可能です。ただし、そんなことしなくてもシステムの周波数特性がちゃんと分かるのが周波数解析のすごいところです。

ここからは、そんな周波数特性の求め方について説明していきます。

インパルス応答と周波数特性

アイデアとしては簡単で、sin波を1つずつ入力するのではなく「全周波数のsin波の和」を1つの信号としてシステムに入力することを考えます。当然、この入力に対する出力は「全周波数のsin波それぞれに対する出力の和」なので、その周波数成分(つまりフーリエ変換)がそのままシステムの周波数特性を表していることになります。

全周波数のsin波の和を入力することで、システムの周波数特性が分かる

そして、この「全周波数のsin波の和」はインパルス関数になることが知られています。ということは、それに対する出力(つまりインパルス応答)をフーリエ変換したものが、そのままシステムの周波数特性を表していることになります。

全周波数のsin波の和はインパルス関数になるので、システムのインパルス応答から周波数特性が分かる

周波数伝達関数による解析的な求め方

なるほど、インパルス応答のフーリエ変換ね…やっぱめんどくさそう

大丈夫です!インパルス応答のフーリエ変換は比較的お手軽に計算できます。これについて、順番に説明していきましょう。

まず、システムのインパルス応答$Y(s)$を計算しましょう。伝達関数$G(s)$で表されるシステムにインパルス入力$U(s)=1$を与えればOKですね。

$$Y(s) = G(s) U(s) = G(s)$$

当然、伝達関数そのものが出てきます。インパルス応答からシステムの特性が分かるのにも納得がいきますね。

で、このインパルス応答$G(s)$のフーリエ変換ですが、$s$に$j \omega$を代入した$G(j \omega)$により計算できることが知られています($\omega$はsin波の角周波数、$j$は虚数単位です)。このシステムの周波数特性を表す式$G(j\omega)$は周波数伝達関数と呼ばれ、周波数解析において非常に重要な役割を持ちます。

※厳密に言うと、特定の条件にて$G(j \omega)$はインパルス応答のフーリエ変換と完全に一致しなくなりますが、実用上は同一視してほとんど問題ありません。

例として、次の伝達関数$G(s)$で表される1次システムの周波数特性を求めてみましょう。

$$G(s) = \frac{K}{Ts+1}$$

周波数伝達関数$G(j\omega)$を求め、式を整理します。

$$\begin{align}G(j\omega) &= \frac{K}{T\omega j+1} = \frac{K(T\omega j-1)}{(T\omega j +1)(T\omega j -1)}\\\\ &= \ubg{\frac{K}{T^2 \omega ^2 + 1}}{実部=aとする} + \Bigl( \ubg{ – \frac{KT \omega}{T^2 \omega ^2 + 1}}{虚部=bとする} \Bigr) j\\\\ &= a+bj \end{align}$$

伝達関数に虚数を代入しているので、計算結果は複素数となりますね。これを複素平面上にプロットしたとき、複素平面上のベクトル$G(j\omega)$と周波数特性は、次の関係性を持ちます。

  • ベクトルの絶対値$|G(j\omega)|$:sin波の振幅が何倍になるか。ゲインと呼ばれる
  • ベクトルの偏角 $\angle G(j\omega)$:sin波の位相が何度ずれるか。位相(または位相差)と呼ばれる

周波数伝達関数の複素平面プロットと、周波数特性(ゲイン・位相)の関係

上図を元に、ゲイン$|G(j\omega)|$と位相$\angle G(j\omega)$は次のように計算できます。

$$\begin{align}|G(j\omega)|&= \sqrt{a^2+b^2} \\ \angle G(j\omega) &= \tan ^{-1}\left( \frac{b}{a}\right)\end{align}$$

実部$a$と虚部$b$は角周波数$\omega$によって値が変わるため、上式に特性を知りたい角周波数を代入すれば、それに対する周波数特性が分かります。また、上式を$\omega$の関数としてプロットすれば、様々な各周波数に対する周波数特性が一気に分かるというわけです。

様々な角周波数に対する周波数特性を表す方法としては、ボード線図ベクトル軌跡がよく用いられます。

スポンサーリンク

実験的な求め方

ここまで、伝達関数の式から解析的に周波数特性を求める方法について解説してきました。一方で、インパルス応答は実際にシステムを動かして確認することもできます。よって、インパルス応答のデータをフーリエ変換することによって、実験的にシステムの周波数特性を求めることも可能です。

インパルス応答から実験的に周波数応答を求める場合

具体例としては、機械システムの周波数特性(振動特性)を確認するインパルス加振実験が代表的です。ハンマーで対象をぶっ叩いて、インパルス応答を分析するわけですね。

インパルス加振実験により、機械システムの周波数特性を測る図

ただし、理想的なインパルス信号を現実に与えることは困難であることや、フーリエ変換の窓関数の影響により、この方法で得られる周波数特性には必ず誤差が含まれます。とはいえ、実用上は非常に有用な方法です。

以上、周波数応答・周波数特性の直感的イメージと使い方でした。

このページのまとめ
  • sin波状の入力に対するシステムの応答のことを、周波数応答と呼ぶ
  • 「様々な周波数(速さ)のsin波に対し、システムがどう反応するか」を周波数特性と呼ぶ
  • 伝達関数$G(s)$に$j\omega$を代入した$G(j\omega)$を周波数伝達関数と呼び、周波数特性はこれから計算できる
  • 信号を「速さ成分」に切り分けて個別に分析できるのが、周波数解析の強み

コメント