頻出関数:sinc関数と周期的sinc関数

グラフ種類 両方 sinc 周期的sinc  
\(N\) 10
横軸範囲 \(m\) 1 縦軸 符号つき線形 絶対値線形 絶対値dB
sinc関数 周期的sinc関数
\(\displaystyle\quad f(x) = \frac{\sin(\pi x)}{\pi x}\quad \) \(\displaystyle\quad g(y) = \frac{1}{N}\frac{\sin(N\pi y)}{\sin(\pi y)}\quad \)

画面の説明

信号処理分野における頻出関数である,sinc関数および周期的sinc関数のグラフです.

パラメータ \(N\) は,周期的sinc関数における \(N\) の値を指定します.横軸範囲 \(m\) は,周期的sinc関数の表示範囲 \(|y|\le m\) を指定するものです.このとき,sinc関数自体はパラメータによらず同じものですが,横軸範囲が \(|x|\le mN\) となるようにスケーリングしています.これにより,sinc関数と周期的sinc関数の山や谷の位置が一致するよう描かれます.

sinc関数は \(x=0\) を中心とする山の両脇が振動しながら \(|x|\) の値が大きくなるにつれて振幅が小さくなっていくのに対し,周期的sinc関数は文字通り \(y\) に関して周期的です.周期的sinc関数は,\(y\) の値が整数のとき \(\pm 1\) の値をとる山(谷)となっており,そのうち \(N\) が偶数かつ \(|y|\) が奇数のときは \(-1\),それ以外のときは \(+1\) となります.

解説

sinc関数は,連続変数矩形関数をフーリエ変換すると現れます.たとえば,パルス幅が \(T\),高さが \(1/T\) であるような連続時間矩形信号
\(\displaystyle\quad x(t) = \left\{ \begin{eqnarray} \frac{1}{T}, & \quad 0 \le t < T \\ 0, & \quad t < 0, T \le t \end{eqnarray} \right. \)
をフーリエ変換すると,
\(\displaystyle\quad X(\Omega) = \int_{-\infty}^\infty x(t) e^{-j\Omega t} dt = \frac{\sin(\Omega T/2)}{\Omega T/2} e^{-j\Omega T/2} \)
が得られ,符号つき振幅の部分がsinc関数の形になっています.

一方,周期的sinc関数は,離散変数矩形関数をフーリエ変換すると現れます.たとえば,\(N\) 点の離散時間矩形信号
\(\displaystyle\quad x[n] = \left\{ \begin{eqnarray} \frac{1}{N}, & \quad 0 \le n \le N-1 \\ 0, & \quad n < 0, N \le n \end{eqnarray} \right. \)
を離散時間フーリエ変換すると,
\(\displaystyle\quad X(e^{j\omega}) = \sum_{n=-\infty}^\infty x[n] e^{-j\omega n} = \frac{1}{N} \frac{\sin(\omega N/2)}{\sin(\omega/2)} e^{-j\omega(N-1)/2} \)
が得られ,やはり符号つき振幅の部分が周期的sinc関数の形になっています.

sinc関数と周期的sinc関数は,非周期的か周期的かという大きな違いはありますが,中央の山付近の振動的な挙動は極めて類似しており,このページのように両者を重ねて表示すると,\(N\) が小さい場合を除き形状がほとんど一致することがわかります.(両者の本質的な違いは分母が \(x\) か \(\sin x\) かであり,\(|x|\ll 1\) のとき \(\sin x \approx x\) なので当然といえば当然です.)このため,周期的sinc関数において \(N\) の値を大きくしても中央の山付近の振動の振幅はほとんど変化しません.\(N\) が奇数,すなわち \(N=2M+1\) のとき,周期的sinc関数はディリクレ核 (Dirichlet kernel) と呼ばれます(ただし,ディリクレ核の定義はこのページにおける \(g(y)\) の \(y\) を \(y/2\) で置き換えたもの).

なお,「周期的sinc関数」という呼び方はそれほど一般的ではないようですが,「矩形信号をフーリエ変換すると得られる」という点でsinc関数と同様に頻出する関数であり,sinc関数の離散時間版と言ってよいでしょう.固有名詞で呼びたいところですが,有名なsinc関数とは異なり,上記ディリクレ核のようなケースを除き,普遍的な呼び名は私が調べた範囲では見つかりませんでした.MATLABのドキュメントに「周期的sinc関数」という名称が記載されていましたので,この呼び名を使用しています.

これら2つの関数は,信号処理のあちこちの場面で顔を出します.

たとえば,サンプリング定理に関連して,標本化された離散時間信号から連続時間信号を復元するにはsinc関数を内挿する,と習います.標本化という操作は,時間領域ではサンプリング周期で並んだインパルス列をかけること,周波数領域では連続時間信号のスペクトルをサンプリング周波数間隔で複製(=周期化=サンプリング周波数で並んだインパルス列との畳み込み)することです.連続時間信号の復元はその逆,つまり周波数領域ではナイキスト周波数をカットオフ周波数とする理想ローパスフィルタ(矩形関数)をかける,時間領域では離散時間信号(=値つきインパルス列)とsinc関数との畳み込みであることを意味しています.

加えて,無限に時間の長い信号や無限周波数帯域の信号を扱うことは不可能ですので,現実的な信号処理では時間的な切り出しや周波数帯域制限を伴います.これらの処理を行ったとき,時間や周波数を打ち切ることは矩形関数との積をとることですので,反対側の領域ではsinc関数もしくは周期的sinc関数との畳み込みが発生することになります.

たとえば,連続時間周期信号を扱うフーリエ級数において,項数を有限項で打ち切ると,信号の不連続点近傍で突起や振動的な振る舞いが見られる,すなわちギブス (Gibbs) 現象が発生することが知られています.これは,離散周波数の世界での打ち切り(=矩形信号との積)は連続時間周期信号の世界での周期的sinc関数(ディリクレ核)との周期的畳み込みになる,という形で説明できます.

実データに基づく周波数解析では,有限長の信号を切り出す窓関数が使用されます.矩形窓はまさに矩形信号をかけるものですので,そのスペクトルではsinc関数(離散時間信号に対しては周期的sinc関数)が登場します.他の形状の窓関数でも有限長で切り出す操作を行う限り,何らかの形で矩形の切り出しを行っていますので,そのスペクトルには(周期的)sinc関数が関係します.

また,ディジタルフィルタを設計する際,周波数領域で所望の周波数特性を設計してフーリエ逆変換によりインパルス応答を導いた後,インパルス応答を有限長で打ち切ったフィルタとする場合,所望の周波数特性に不連続や急峻な特性があると,今度は周波数領域でのGibbs現象が発生し,フィルタとしての特性に影響が生じます.


更新履歴


作成:2022年11月20日