From 3621ff049c32e36f166e6202045b21952febd7d7 Mon Sep 17 00:00:00 2001 From: Mikkeli Matlock Date: Fri, 13 Mar 2026 21:05:26 +0900 Subject: [PATCH] manual merge from dsp notes --- wip/dsp-notes.md | 16 ---- wip/dsp.md | 195 +++++++++++++++++++++++++++-------------------- 2 files changed, 114 insertions(+), 97 deletions(-) delete mode 100644 wip/dsp-notes.md diff --git a/wip/dsp-notes.md b/wip/dsp-notes.md deleted file mode 100644 index de4471e..0000000 --- a/wip/dsp-notes.md +++ /dev/null @@ -1,16 +0,0 @@ -# digital signal processing - -A boring lecture about signals and systems, and its digital implementation in DSP. -Borderline 'song' less 'poetic'. - -The actual material (text that is read out by a vocal synthesiser) is in Japanese. - -## Simple notes - -For things that are not easily pronounced (e.g. formulae, expressions, symbols), inclusive either: -- Mark how the thing should be pronounced in a pair of adjacent parentheses - - e.g. H(ω) (エッチオメガ) -- (inclusive) Or don't embed these elements too deep into the flow of sentences; use common, laymen's language instead - - e.g. not `Fs/2(サンプリング周波数の半分)までの帯域を忠実に再構成できる` but `サンプリング周波数の半分までの帯域を忠実に再構成できる` - -The general direction is to stay boring, but the deadpan kind of boring. Keep technical language appearing but explain things in more laymen's language. \ No newline at end of file diff --git a/wip/dsp.md b/wip/dsp.md index dfc24de..9c1ddc6 100644 --- a/wip/dsp.md +++ b/wip/dsp.md @@ -3,7 +3,17 @@ A boring lecture about signals and systems, and its digital implementation in DSP. Borderline 'song' less 'poetic'. -The actual material (text that is read) is in Japanese. +The actual material (text that is read out by a vocal synthesiser) is in Japanese. + +## Simple notes + +For things that are not easily pronounced (e.g. formulae, expressions, symbols), inclusive either: +- Mark how the thing should be pronounced in a pair of adjacent parentheses + - e.g. H(ω) (エッチオメガ) +- (inclusive) Or don't embed these elements too deep into the flow of sentences; use common, laymen's language instead + - e.g. not `Fs/2(サンプリング周波数の半分)までの帯域を忠実に再構成できる` but `サンプリング周波数の半分までの帯域を忠実に再構成できる` + +The general direction is to stay boring, but the deadpan kind of boring. Keep technical language appearing but explain things in more laymen's language. ## Outline @@ -34,6 +44,7 @@ The actual material (text that is read) is in Japanese. - By linearity and time-invariance, the output is the corresponding sum of scaled, shifted impulse responses - Convolution as the operation - That sum is convolution: y = x * h + - In continuous time, this is an integral: y(t) = ∫ x(τ) h(t−τ) dτ - Symmetric in its arguments: x * h = h * x - Signal and system are interchangeable operands — both are functions; convolution makes no distinction between them - Commutativity: for LTI systems, order of composition is irrelevant @@ -41,9 +52,11 @@ The actual material (text that is read) is in Japanese. - h₁ * h₂ = h₂ * h₁ — order does not affect the result ### 3. Signal transformation -- A signal in time can be equivalently represented in the frequency domain -- The Fourier transform: s(t) ↔ S(ω); decomposes a signal into its constituent frequencies -- Analog signals carry frequency components from DC to arbitrarily high frequencies +- A signal can be represented equivalently in the frequency domain +- The Fourier transform: s(t) ↔ S(ω); any signal is a sum of sinusoids at different frequencies + - Each sinusoid has a frequency, amplitude, and phase + - S(ω) is the spectrum: how much of each frequency is present +- Analog signals carry components from DC to arbitrarily high frequencies ### 4. Filters - A filter is an LTI system — characterized by its frequency response H(ω) @@ -56,15 +69,19 @@ The actual material (text that is read) is in Japanese. - In discrete time: finite impulse response (FIR) and infinite impulse response (IIR) filters ### 5. Discrete time -- Discretization on two axes: amplitude and time - - Amplitude: bit depth; finite resolution; hard clip at boundary (unlike analog soft limits) -- A signal's frequency spectrum, not its time-domain values alone, determines what is lost in sampling - - Analog signals have components from DC to infinite frequency — not representable in discrete time - - Discrete time is viable if components up to a sufficient frequency are preserved +- Moving from continuous to discrete: two axes require discretization +- Amplitude: N bits → 2^N discrete levels + - Each sample is mapped to the nearest representable level; the error is quantization noise + - The representable range is fixed by design and hardware (ADC/DAC reference voltage) + - Hard clip at the boundary — analog degrades gradually toward its physical limits; digital does not +- Time axis: sampling captures only finitely many values per second + - Analog signals contain frequency components up to infinity — a discrete system cannot represent all of them + - Discrete time is viable when the high-frequency components that would be lost are not needed - Nyquist: given sampling rate Fs, faithful reconstruction is guaranteed up to Fs/2 - What Fs/2 should be is an applied engineering question — Nyquist does not answer it - Components above Fs/2 are lost: aliasing - LTI and convolution hold in discrete time — commutativity survives + - Convolution becomes a sum (finite for FIR, infinite for IIR) ### 6. Nonlinearity and consequences - Real systems violate LTI: time-varying parameters, feedback, saturation @@ -82,114 +99,130 @@ The actual material (text that is read) is in Japanese. ### 1. 信号とシステム -まず信号とは何か、次にシステムとは何かを定義し、 -その上でシステムの性質を議論する。 +まず信号とは何か、次にシステムとは何かを定義し、その上でシステムの性質を議論する。 -信号とは、一つ以上の変数の関数として定義される。 -信号は情報を担う。 -ここでは時間を変数とし、振幅の時間変化として扱う。 +信号とは情報を運ぶものである。 +ここでは時間の経過とともに振幅がどう変化するか、その関数として扱う。 -システムとは、入力信号を出力信号へ写す操作である。 -内部の構造は定義に含まれない。 -システムはその入出力の関係によってのみ特徴づけられる。 +システムとは、入力信号を受け取り、出力信号を返す操作である。 +箱の中身は問わない。何を入れたら何が出るか、その関係だけがシステムを定義する。 システムの性質として、まず線形性を取り上げる。 -線形システムとは、重ね合わせの原理が成立するシステムである。 -入力をスケーリングすれば出力も同率でスケーリングされ、 -入力の和に対する出力は、各入力の出力の和に等しい。 +線形システムとは、重ね合わせの原理が成り立つシステムである。 +入力を2倍にすれば出力も2倍になる。二つの入力を足し合わせたときの出力は、それぞれ単独で入れたときの出力を足したものと等しい。 +この二つの条件が揃ったとき、そのシステムは線形である。 -ここで注意が必要である。 -多くの物理システムはこの条件を満たさない。 -線形性は特殊な性質であり、デフォルトではない。 +ただし注意が必要である。 +多くの物理システムはこの条件を満たさない。線形性は特殊な性質であり、当たり前ではない。 次に時不変性について述べる。 -時不変システムとは、入力を時間軸上でシフトしたとき、 -出力も同じだけシフトされるシステムである。 -パラメータが時間とともに変化するシステムは、時不変ではない。 +時不変システムとは、入力を時間軸上でずらしたとき、出力も同じだけずれるシステムである。 +今日と明日で同じ入力を与えれば、同じ出力が返ってくる。 +パラメータが時間とともに変わるシステムは、この条件を満たさない。 -線形かつ時不変なシステムを、線形時不変システムと呼ぶ。 -以降の議論はこの線形時不変システムを対象とする。 -これは解析的に扱いやすい、制限された特殊ケースである。 -現実の典型ではない、という点は記憶にとどめておいてほしい。 +線形かつ時不変なシステムを、線形時不変システムと呼ぶ。以降の議論はこれを対象とする。 +これは解析的に扱いやすい、意図的に絞った特殊ケースである。現実の典型ではない。 -線形時不変システムの性質をさらに掘り下げる前に、 -インパルス信号を導入する。 -インパルス信号とは、単一の時刻に単位エネルギーが集中した信号である。 -線形時不変システムにインパルスを入力したときの出力を、インパルス応答と呼ぶ。 -このインパルス応答が、線形時不変システムを完全に特徴づける。 +線形時不変システムをさらに掘り下げる前に、インパルス信号を導入する。 +インパルス信号とは、単一の瞬間に単位エネルギーが集中した信号である。実際には存在しない理想だが、有用な概念道具である。 +このインパルスを線形時不変システムに入力したときの出力を、インパルス応答と呼ぶ。 -ここで重要な点を強調する。 -インパルス応答は、信号と同種の関数である。 -これにより、システムは信号と同じ操作の空間に置かれる。 -システムと信号の区別は、操作の上では消える。 +インパルス応答は、そのシステムを完全に決定する。 +なぜなら、任意の入力はインパルスの積み重ねとして分解できるからである。インパルス応答さえ分かれば、どんな入力に対する出力も計算できる。 + +もう一つ重要なことがある。 +インパルス応答は、システムの出力でありながら、信号と同じ種類の関数である。 +つまりシステムは、信号と同じ操作の空間に置くことができる。システムと信号の区別は、操作の上では消える。 ### 2. 線形時不変システムと畳み込み -なぜそう言えるのか。 -任意の入力信号は、スケーリングされた時間シフトインパルスの和として分解できる。 -線形性と時不変性により、 -それぞれのインパルスに対する出力の和が、入力全体に対する出力となる。 -この操作を畳み込みと呼ぶ。 +なぜインパルス応答がシステムを完全に決定できるのか。 + +任意の入力信号は、大きさの異なるインパルスを時間軸上に並べたものとして表せる。 +線形時不変システムはそれぞれのインパルスに独立に反応し、その応答を全て重ね合わせる。 +この重ね合わせ全体の操作を、畳み込みと呼ぶ。 + +連続時間においては、畳み込みは積分として定義される。 +時間軸に沿って入力を少しずつずらしながら、そのずれに対応するインパルス応答を強さに応じて足し合わせる。その積分の結果が出力である。 y = x * h (y イコール x 畳み込み h) -畳み込みはその引数に対して対称である。 +ここで興味深い性質がある。畳み込みはその二つの引数に対して対称である。 x * h = h * x (x 畳み込み h イコール h 畳み込み x) -これは代数的な性質にとどまらない。x と h が同種の対象であることの表れである。 +これは単なる計算上の便宜ではない。x と h が同じ種類の対象であること、つまりシステムが信号空間に吸収されることの、自然な帰結である。 -この対称性から、重要な結論が導かれる。 -二つの線形時不変システムを直列に接続する場合を考える。 -合成されたシステムのインパルス応答は、各インパルス応答の畳み込みに等しい。 +この対称性から、実用上重要な結論が出てくる。 +二つの線形時不変システムを直列につないだとき、合成されたシステムのインパルス応答は、各インパルス応答の畳み込みである。 h₁ * h₂ = h₂ * h₁ (h1 畳み込み h2 イコール h2 畳み込み h1) -接続の順序は、結果に影響しない。 +どちらを先につないでも、結果は変わらない。 ### 3. 信号変換 -ここで話題を変える。 -これまでの議論は連続時間を前提としていた。 -しかしデジタルシステムにおいては、連続信号をそのまま扱うことができない。 +これまで信号を時間の関数として扱ってきた。しかし同じ信号を、全く別の視点から見ることができる。 +それが周波数領域という見方である。 -離散化は二つの軸で生じる。振幅軸と時間軸である。 -振幅軸の離散化はビット深度によって規定される。 -表現可能な範囲の境界でハードクリップが発生する。 -アナログシステムの物理的な限界とは異なり、これは硬い境界である。 +フーリエ変換がそれを可能にする。 +s(t)(エス ティー)と S(ω)(エス オメガ)は同じ信号の二つの顔である。 +一方は時間の経過を、もう一方は周波数の分布を示す。 -時間軸の離散化を理解するには、まず別の観点から信号を見る必要がある。 -信号 s(t)(エス ティー)は、時間領域での表現とは別に、周波数領域でも表現できる。 -これをフーリエ変換と呼ぶ。s(t)(エス ティー)と S(ω)(エス オメガ)は同じ信号の二つの見方である。 -この変換により、信号を周波数成分の重ね合わせとして捉えることができる。 +フーリエ変換が言っているのは、こういうことである。 +どんな信号も、周波数の異なる正弦波をいくつか重ね合わせたものとして表せる。 +たとえば楽器の音を思い浮かべてほしい。基音があり、倍音がある。 +それぞれが異なる周波数の正弦波で、それらが重なって一つの音色になる。 +S(ω) はその内訳である。どの周波数の成分がどれだけの強さで含まれているか、それがスペクトルである。 -アナログ信号は、原理的にはゼロから無限大まで、すべての周波数成分を持ちうる。 -離散システムはこれを完全には表現できない。 -しかし、もし十分な高周波成分が不要であれば、離散時間は有効な選択肢となる。 -これが離散化の根拠である。 +アナログ信号は原理的には、ゼロから無限大まであらゆる周波数成分を持ちうる。 +このことが、後の離散化の議論に関わってくる。 ### 4. フィルタ -フィルタは、線形時不変システムの具体的な例である。 -フィルタは周波数応答 H(ω)(エイチ オメガ)によって特徴づけられる。 -周波数応答はインパルス応答のフーリエ変換である。 -フィルタリングとは、信号の周波数成分を選択的に通過させ、あるいは減衰させることである。 +フィルタは線形時不変システムの実用的な例である。 +フーリエ変換の言葉で言えば、フィルタとは信号のスペクトルを形作るシステムである。 +フィルタを特徴づけるのは周波数応答 H(ω)(エイチ オメガ)である。 +これはインパルス応答 h(t) をフーリエ変換したものである。 +インパルス応答が時間領域でシステムを表すように、周波数応答は周波数領域でそのシステムを表している。 + +フィルタの働きは、周波数によって信号をふるいにかけることである。 基本的な分類としてローパス、ハイパス、バンドパスがある。 -ローパスフィルタは低周波成分を通過させ、高周波成分を減衰させる。 -ハイパスフィルタはその逆で、高周波成分を通過させ、低周波成分を減衰させる。 -バンドパスフィルタは特定の帯域のみを通過させ、それより低い成分も高い成分も減衰させる。 +ローパスフィルタは低い周波数だけを通し、高い周波数を削ぎ落とす。 +ハイパスフィルタはその逆で、高い周波数を通し、低い周波数を削ぐ。 +バンドパスフィルタは特定の帯域だけを通し、それより低い成分も高い成分も減衰させる。 離散時間においては、有限インパルス応答フィルタと無限インパルス応答フィルタの区別がある。 -前者はインパルス応答が有限、後者は無限である。 +前者のインパルス応答はある時点で終わる。後者は終わらない。 ### 5. 離散時間 -サンプリング周波数を Fs とする。 -ナイキストの定理が保証するのは、Fs/2(サンプリング周波数の半分)までの帯域を忠実に再構成できる、ということである。 -それが全てである。定理はそれ以上のことを言わない。 -Fs/2(サンプリング周波数の半分)をどこに設定すべきかは、定理が答える問いではない。それは用途が決める。 -Fs/2(サンプリング周波数の半分)を超える成分は再構成できない。これをエイリアシングと呼ぶ。 +ここで話題を変える。これまでの議論は連続時間を前提としていた。 +デジタルシステムは連続信号をそのまま扱えない。離散化が必要になる。 -重要なのは、この離散化によって線形時不変システムの性質が失われるわけではない、という点である。 -離散時間の線形時不変システムは、連続時間の線形時不変システムと類似した性質を持つ。 -畳み込みは有限または無限の和となる。 +離散化には二つの軸がある。振幅軸と時間軸である。 + +まず振幅軸について。 +デジタルシステムが振幅を表現できる精度は、ビット深度によって決まる。 +Nビットのシステムは 2^N 個の離散的な振幅レベルを持つ。 +各サンプルの値は、最も近いレベルに丸められる。この丸め誤差を量子化ノイズと呼ぶ。 +表現できる振幅の上限と下限は、設計とハードウェアによって固定されている。ADCやDACの基準電圧がそれを決める。 +その境界を超えると、ハードクリップが起きる。 +アナログ回路は限界に近づくにつれて少しずつ歪む。デジタルにそういう曖昧さはない。境界は硬い。 + +次に時間軸について。 +デジタルシステムは、連続した時間の流れから、一定間隔で値を取り出す。これがサンプリングである。 +ここで問題がある。前の節で述べたように、アナログ信号は原理的には無限大まで周波数成分を持ちうる。 +しかし有限のサンプリング頻度では、表現できる周波数に上限がある。全てを保存することはできない。 + +では何が失われ、何が残るのか。 +もし信号の中に高すぎる周波数成分がなければ、サンプリングによって失うものは実質的にない。 +これが離散化を正当化する前提である。 + +ナイキストの定理が、これを定量化する。 +サンプリング周波数を Fs としたとき、Fs/2 より低い周波数成分は忠実に再構成できる。 +定理が言うのはそれだけである。Fs をどこに設定すべきかは、定理が教えてくれることではない。用途が決める。 +Fs/2 を超える成分は再構成できない。これをエイリアシングと呼ぶ。 + +補足しておく。この離散化によって、線形時不変システムの性質が崩れるわけではない。 +連続時間において積分であった畳み込みは、離散時間においては和になる。有限インパルス応答なら有限和、無限インパルス応答なら無限和である。 可換性を含む全ての性質は引き継がれる。 ### 6. 非線形性とその影響