Chapter 01
離散時間信号とサンプリング
1. 離散時間信号とは
直感
マイクで音を録るとき、空気の振動(連続的な波)を一定間隔でパシャパシャと「スナップ写真」に撮って数値の列にする。 この数値の列が離散時間信号である。
元のアナログ(連続時間)信号を \(x_a(t)\)(\(t\) は秒単位の時刻)、写真を撮る間隔を \(T\) 秒とすると、\(n\) 枚目の値は
- \(x_a(t)\): 元のアナログ(連続時間)信号
- \(T\): サンプリング周期 [s]
- \(f_s = 1/T\): サンプリング周波数 [Hz](例: CD なら 44100 Hz)
離散時間信号は「\(T\)秒ごとの値だけを覚えた数列」であり、サンプル同士の間の時刻には値が存在しない。

重要な基本信号
単位インパルス(デルタ)信号 — 離散信号処理で最も重要な信号:
直感: 「時刻 0 に一発だけ叩く」信号。太鼓を一回だけポンと叩くイメージ。 連続時間には「幅ゼロで面積 1」という少し特殊なデルタ関数 \(\delta(t)\) がある(3 節 で使うときに定義する)が、離散版は単なる「高さ 1 の 1 サンプル」なので数学的に何も難しくない。
単位ステップ信号:
直感: 「時刻 0 でスイッチを入れてそのまま」。
両者の関係の導出:
\(\delta[k]\)を \(k = -\infty\) から時刻 \(n\) まで足し合わせるとステップになる:
確認:\(n < 0\)のとき、和の範囲に\(k=0\)が含まれないのですべての項が 0、よって\(u[n]=0\)。 \(n \geq 0\)のとき、\(k=0\)の項だけが 1 で他は 0、よって\(u[n]=1\)。定義と一致する。∎
逆に、ステップの「差分」がインパルスになる:
確認:\(n=0\)で\(u[0]-u[-1] = 1-0 = 1\)。\(n\geq 1\)で\(1-1=0\)。\(n\leq -1\)で\(0-0=0\)。∎

なぜこの 2 つが「基本信号」なのか(存在意義)。
- \(\delta[n]\) はシステムの指紋を測るプローブ。ここでフィルタとは、信号を入力すると加工した信号を出力する処理のこと(正確な定義は 03 章)。中身のわからないフィルタに \(\delta[n]\) を一発だけ叩き込んだときの出力を \(h[n]\) と書きインパルス応答と呼ぶ。この \(h[n]\) が、そのフィルタの挙動を完全に決める(03 章で証明)。
- \(u[n]\) はもう一方の基本入力「スイッチを入れっぱなし」。スイッチを入れた直後に出力が一時的に暴れてから落ち着くまでの変化(過渡応答)と、その落ち着き方(整定)を見るのに使う、実務のもう一つの標準プローブ。
- \(u=\sum\delta\)、\(\delta=u-u[n-1]\) という和/差の対応は、連続系の積分 \(\int\) と微分 \(d/dt\) の離散版。この対はこの先くり返し効いてくる。
任意の信号のインパルスによる分解(後の畳み込みの導出で使う超重要式):
導出:\(\delta[n-k]\)は\(n=k\)のときだけ 1、それ以外は 0。 したがって右辺の無限和のうち生き残るのは\(k=n\)の項だけで、その値は\(x[n] \cdot 1 = x[n]\)。左辺と一致する。∎
直感: どんな信号も「各時刻に置かれた、高さの違うインパルスの列」として見なせる、ということ。 レゴブロックを 1 個ずつ並べて任意の形を作るのと同じで、\(\delta\)が「ブロック 1 個」に相当する。

この分解は何のためにやるのか(存在意義)。 ねらいはただ 1 つ、「たった 1 回の測定 \(h[n]\) から、あらゆる入力への出力を計算できるようにする」こと。次の 4 ステップでつながる:
- どんな入力も \(\sum_k x[k]\delta[n-k]\) と「インパルスの寄せ集め」に分解できる(=この式)
- 1 発 \(\delta[n]\) の応答は指紋 \(h[n]\)(インパルス応答の定義)
- 線形性(入力を足し合わせれば出力も足し合わさり、入力を定数倍すれば出力も定数倍になる性質。03 章)より、寄せ集めの出力は各インパルス \(x[k]\delta[n-k]\) への出力の足し合わせ
- 時不変性(いつ入力しても同じ形の応答が返る性質。03 章)より、\(k\) だけ遅れた \(\delta[n-k]\) の応答は \(h[n-k]\)。よって出力 \(= \sum_k x[k]h[n-k]\) = 畳み込み(「遅らせて、倍率を掛けて、足す」という演算)
つまりこの分解は「指紋 \(h[n]\) を全入力に使い回すための橋渡し」である。これが無ければ \(h[n]\) を測っても宝の持ち腐れ、逆にこれがあるおかげで 03 章以降のフィルタ理論すべてが 1 本の \(h[n]\) の上に乗る。鐘を一度叩いた "ゴーン"(\(h[n]\))さえ録っておけば、どんな連打の音も「遅らせて音量を変えた "ゴーン" の足し算」で予測できる——その「叩きの寄せ集め」という見方が、まさにこの式である。(4 ステップの数式化が 03 章の畳み込み。)
2. 正規化周波数
離散信号の世界では、時間の単位が「秒」ではなく「サンプル」になる。そこで周波数も正規化する。
周波数 \(f\) [Hz] のアナログの正弦波は \(\cos(2\pi f t)\) と書ける。\(2\pi f\) をまとめて角周波数 \(\Omega = 2\pi f\) [rad/s](1 秒あたりに位相が何ラジアン進むか)と呼ぶ。 ここで位相とは、波が 1 周期の中のどの段階にいるかを角度で表したもの(1 周期 = \(2\pi\) rad)で、\(\cos\) の中身がそれである。 この正弦波 \(\cos(\Omega t)\) を周期 \(T = 1/f_s\) でサンプリングすると、\(t = nT\) を代入して:
ここで
を正規化角周波数と呼ぶ。
直感:\(\omega\)は「1 サンプル進むごとに位相が何ラジアン回るか」。
- \(\omega = 0\): 直流(全く回らない)
- \(\omega = \pi\): 1 サンプルごとに半回転(\(+1, -1, +1, -1, \dots\))= 表現できる最高の速さ(理由は下)
- \(\omega = 2\pi\): 1 サンプルごとに 1 回転 = サンプル点上では直流と区別がつかない
最後の点が本質的で、離散信号の周波数は\(2\pi\)周期でしか意味を持たない。実際、任意の整数\(m\)に対して
(\(mn\)は整数なので\(2\pi m n\)は位相として一周の整数倍、よって消える)。∎
さらに \(\cos\) は偶関数(\(\cos(-\theta) = \cos\theta\))なので、\(\pi\) を超えた周波数は \(\pi\) より下に折り返る:
つまり \(\omega\) と \(2\pi - \omega\) は同じサンプル列を生む。よって本当に区別できる周波数は \(0 \leq \omega \leq \pi\) だけで、\(\omega = \pi\) が最高の速さである。 \(\omega = \pi\) に対応する実周波数 \(f = f_s/2\) をナイキスト周波数と呼ぶ。

3. サンプリング定理とエイリアシング
直感
回転するタイヤをビデオで撮ると、逆回転して見えることがある(ワゴンホイール効果)。 これは「撮影のコマ間隔に対してタイヤが速く回りすぎて、遅い回転と区別がつかなくなる」現象で、 サンプリングにおけるエイリアシング(折り返し歪み)そのものである。
インパルス列によるサンプリングのモデル化
サンプリングを数式で扱うため、連続時間版のデルタ関数を導入する。ディラックのデルタ関数 \(\delta(t)\) とは、 \(t \neq 0\) では 0、\(t = 0\) にだけ「幅ゼロ・面積 1」の無限に細く高い尖りを持つ理想的な関数で、
で定める(1 節 の離散版 \(\delta[n]\) は「高さ 1」だったが、こちらは「面積 1」であることに注意)。 この定義から抜き出し性質が出る: 滑らかな関数 \(g(t)\) に対して、\(\delta(t)\) が 0 でないのは \(t = 0\) だけで、そこでは \(g(t) = g(0)\) だから
同じ理由で \(g(t)\delta(t - t_0) = g(t_0)\delta(t - t_0)\) でもある。
連続信号\(x_a(t)\)に周期\(T\)のインパルス列
を掛けたものをサンプリング済み信号とみなす:
(上の性質\(x_a(t)\delta(t-nT) = x_a(nT)\delta(t-nT)\)を使った。デルタは\(t=nT\)でしか「生きて」いないので、掛ける関数はその点の値だけが効く。)

インパルス列のフーリエ級数展開(導出)
この節の作戦. 知りたいのは標本化後の信号\(x_s(t) = x_a(t)s(t)\)のスペクトル(信号の中にどの周波数の成分がどれだけ含まれるか。次々節で定義するフーリエ変換で求める)。 この節と次節では、次の 02 章で丁寧に扱う道具を 2 つだけ先取りして使う: \(j\) は虚数単位(\(j^2 = -1\))、そして \(e^{j\theta} = \cos\theta + j\sin\theta\) は「角度 \(\theta\) だけ回転した向きを表す複素数」で、 \(e^{j\Omega t}\) は時間とともに角速度 \(\Omega\) で回り続ける回転成分である。ここで困りごとが 1 つある。
① フーリエ変換が素直に扱えるのは「足し算」だけ。 信号の和のスペクトルは各スペクトルの和になる(線形性)が、 \(x_s = x_a \times s\)のような掛け算のスペクトルを直接計算する道具は、まだ手元に無い。
② ただし例外が 1 つある。 掛ける相手が回転成分 1 個だけ——\(x_a(t) e^{jk\Omega_s t}\)の形——なら答えが分かっていて、 スペクトルは元の\(X_a\)の形を全く変えずに\(k\Omega_s\)だけ横にずらしただけのものになる(周波数シフト。次節の計算の中で 1 行で確認する)。
③ そこで作戦。 トゲの列\(s(t)\)を「回転成分の足し算」に書き直してしまえば、分配法則で
\[ \begin{aligned} x_s &= x_a \times \left(c_0 + c_1 e^{j\Omega_s t} + c_{-1} e^{-j\Omega_s t} + c_2 e^{j2\Omega_s t} + \cdots\right)\\ &= c_0 x_a + c_1 x_a e^{j\Omega_s t} + c_{-1} x_a e^{-j\Omega_s t} + c_2 x_a e^{j2\Omega_s t} + \cdots \end{aligned} \]とバラバラにでき、すべての項が②の「扱える形」になる(各項に付く重み \(c_k\) は次段で求める——結論を先に言うと全部同じ\(\frac{1}{T}\)になる)。 第 1 項はそのままの\(X_a\)(原品)、以降の項は\(X_a\)を\(\pm\Omega_s, \pm 2\Omega_s, \dots\)へずらしたコピー。 つまり「扱えない掛け算 1 個」が「原品とコピーがずらりと並ぶ絵」に化ける——これが次節で導くスペクトル複製の正体である。
この節のゴールはその準備、「\(s(t)\)を回転成分の足し算で表すこと」だけ。それを可能にする道具がフーリエ級数である。
フーリエ級数とは(最小限の導入). いまの\(s(t)\)は、トゲが\(T\)秒おきに立っているから周期\(T\)の周期関数である。 この\(T\)は 1 節 からずっと使っているサンプリング周期そのもの——トゲの間隔 = 標本を取る間隔だから、新しい記号ではない。 そして周期\(T\)で繰り返す関数は、「周期\(T\)の中にちょうど整数回収まる回転成分」—— 基本波\(e^{j\Omega_s t}\)(1 周期でちょうど 1 回転。その角周波数\(\Omega_s = \frac{2\pi}{T} = 2\pi f_s\)はサンプリング角周波数)と その高調波\(e^{jk\Omega_s t}\)(1 周期で\(k\)回転)——の重ね合わせで書ける。これがフーリエ級数の主張:
部品がこの形に限られる理由は素直で、周期\(T\)の関数を作れるのは周期\(T\)を割り切る回転成分だけだから。 実際、回転成分 \(e^{j\alpha t}\) が周期 \(T\) を持つ(\(e^{j\alpha(t+T)} = e^{j\alpha t}\))には \(e^{j\alpha T} = 1\)、すなわち \(\alpha T\) が \(2\pi\) の整数倍 \(\alpha = k \cdot 2\pi/T = k\Omega_s\) でなければならない (半端な回転数の成分を混ぜると 1 周期後に同じ形に戻れない)。 未知なのは各成分の重み\(c_k\)——「どの速さの回転を、どれだけ混ぜるか」——である。
よくある疑問: 「表せる周波数は\(f_s/2\)までのはずでは?」 2 節 で見た上限「意味のある周波数は\(0\)〜\(\pi\)(実周波数で\(f_s/2\))まで」は、数列\(x[n]\)(離散時間信号)の話。 いま展開している\(s(t)\)は連続時間の関数で、連続時間の世界に周波数の上限はない。 しかも\(f_s\)は\(s(t)\)の最大周波数ではなく最小(0 を除く)の周波数——周期\(T\)の関数の基本波が\(1/T = f_s\)で、高調波\(2f_s, 3f_s, \dots\)は上へ無限に続く。 むしろ「幅ゼロのトゲ」という無限に鋭い形を作るには無限に高い周波数が必要で、だから級数は無限に続く (後述の部分和のデモで、有限本数だとトゲが鈍いのはこのため。鋭さは高い高調波の担当)。 そしてこの「\(f_s\)の整数倍に立つ高調波」こそが、次節でスペクトルのコピーを\(f_s\)おきに複製する張本人。 もし\(s(t)\)の成分が\(f_s/2\)止まりなら、そもそもエイリアシングは起きない。
係数公式の導出(直交性で釣り上げる). 重み\(c_k\)は次の事実で取り出せる。以下、\(l\) は「性質を述べるための任意の整数」、\(k\) は級数の和の添字、\(m\) は「取り出したい成分の番号」で、最後に \(l = k - m\) として性質を当てはめる。 まず整数\(l\)に対して回転成分を 1 周期分積分すると:
(\(e^{\pm j l \pi} = (-1)^l\)で分子が消える。\(l = 0\)なら被積分関数は 1 で積分は\(T\)。) つまり回転成分は 1 周期でちょうど整数周して打ち消し合い、回らない成分(\(l=0\))だけが生き残る。 2 つの回転成分 \(e^{jk\Omega_s t}\) と \(e^{jm\Omega_s t}\) について「片方の共役(回転の向きを逆にしたもの)を掛けて 1 周期積分すると、\(k = m\) のときだけ残り、\(k \neq m\) なら 0 になる」—— ベクトルの内積が 0 になるのと同じ意味で、この性質を回転成分の直交性と呼ぶ。 この性質を使い、上の級数の両辺に\(e^{-j m \Omega_s t}\)を掛けて 1 周期積分すると(積分の中の指数は \(e^{j(k-m)\Omega_s t}\)、つまり \(l = k - m\)):
(右辺の積分は\(k = m\)の項だけが\(T\)、他はすべて 0。狙った周波数の成分だけを逆回転で「静止」させて釣り上げる操作で、04 章の DTFT と全く同じ発想。)よって:
これが教科書で「フーリエ係数の公式」と呼ばれるものの正体である。
インパルス列に適用する. 積分区間\([-T/2, T/2]\)の中にあるインパルスは\(t=0\)の\(\delta(t)\)一本だけ。前節で導いたデルタ関数の抜き出し性質 \(\int \delta(t) g(t) dt = g(0)\)より:
すなわちすべての係数が等しく\(1/T\):
「滑らかな波を足してトゲ?」の確認. にわかには信じがたい式だが、途中まで実際に足してみると納得できる:

直感: 時間軸で「等間隔のトゲの列」は、周波数軸では「等間隔(\(\Omega_s\)おき)の成分がすべて同じ強さ\(\frac{1}{T}\)で並んだもの」。 この「等強度の高調波の和」という表現を\(x_s = x_a s\)に代入するのが次節である。
サンプリングされた信号のスペクトル(導出)
\(x_a(t)\)のフーリエ変換——信号に角周波数 \(\Omega\) の逆回転 \(e^{-j\Omega t}\) を掛けて全時間で積分し、その周波数成分の量と位相を取り出したもの——を \(X_a(j\Omega) = \int_{-\infty}^{\infty} x_a(t) e^{-j\Omega t} dt\)とする (引数を \(\Omega\) でなく \(j\Omega\) と書くのは、連続時間信号の変換では複素変数 \(s\) の関数 \(X_a(s)\) を虚軸 \(s = j\Omega\) 上で見たもの、という慣例に合わせるため(08 章のラプラス変換)。意味は「\(\Omega\) の関数」と読んでよい)。 \(x_s(t)\)のフーリエ変換を計算する:
和と積分を入れ替えて:
(積分の中身は「周波数を\(\Omega - k\Omega_s\)に置き換えたフーリエ変換の定義式」そのものである。)
この式の意味(最重要の直感)
サンプリングすると、元のスペクトル\(X_a\)のコピーが\(\Omega_s = 2\pi f_s\)おきに無限に並ぶ。
- 元の信号が周波数 \(B\) より上の成分を含まない(帯域制限されている)とする。元のスペクトルは \(-B\) から \(+B\) の範囲を占め、 \(k = 1\) のコピーは \(f_s - B\) から \(f_s + B\) を占める。両者が重ならない条件は、コピーの左端が元の右端より右にあること: $$ f_s - B > B \quad \Longleftrightarrow \quad f_s > 2B $$ これがサンプリング定理(ナイキスト・シャノンの定理): 「信号の最高周波数の 2 倍より速くサンプリングすれば、元の信号は完全に復元できる」。
- コピーが重なると、隣のコピーの成分が混入して元と区別できなくなる。これがエイリアシング。 周波数\(f > f_s/2\)の成分は\(f_s - f\)の位置に「折り返して」現れる(次節で正弦波について具体的に導出する)。

エイリアシングの周波数を具体的に導出
周波数\(f_0\)(ただし\(f_s/2 < f_0 < f_s\))の正弦波\(\cos(2\pi f_0 t)\)をサンプリングする:
ここで\(f_1 = f_s - f_0\)(これは\(0 < f_1 < f_s/2\)を満たす)とおくと\(f_0 = f_s - f_1\)なので:
\(2\pi n\)は一周の整数倍だから位相として消え、さらに\(\cos(-\theta)=\cos\theta\)より:
つまり \(f_0\)の正弦波のサンプル列は、\(f_s - f_0\)の正弦波のサンプル列と完全に同一。∎ \(f_0 > f_s\) の場合は、2 節 で見た \(2\pi\) 周期性により、まず \(f_0\) から \(f_s\) の整数倍を引いて \(0 \leq f_0 < f_s\) にしてから同じ議論を適用すればよい。
例:\(f_s = 48\)kHz で 30 kHz の音をサンプリングすると、\(48-30 = 18\)kHz の音と区別がつかない。 だから A/D 変換の前には必ずアナログのローパスフィルタ(アンチエイリアシングフィルタ)を入れる。
