[{"content":"","date":"2020年10月7日","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","date":"2020年10月7日","externalUrl":null,"permalink":"/categories/dsp/","section":"Categories","summary":"","title":"DSP","type":"categories"},{"content":"","date":"2020年10月7日","externalUrl":null,"permalink":"/tags/dsp/","section":"Tags","summary":"","title":"DSP","type":"tags"},{"content":"","date":"2020年10月7日","externalUrl":null,"permalink":"/posts/","section":"Posts","summary":"","title":"Posts","type":"posts"},{"content":"","date":"2020年10月7日","externalUrl":null,"permalink":"/","section":"Silicon \u0026 Light Notes","summary":"","title":"Silicon \u0026 Light Notes","type":"page"},{"content":"","date":"2020年10月7日","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"2020年10月7日","externalUrl":null,"permalink":"/tags/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0/","section":"Tags","summary":"","title":"サンプリング","type":"tags"},{"content":" サンプリング周波数を変換する理由 # サンプリング周波数が異なるシステム間でデジタルデータを受け渡しするためには、サンプリング周波数を変換する必要があります。\n例えば PCM オーディオの場合、CD や MD のサンプリング周波数は 44.1 kHz ですが、DVD-Audio は 48 kHz / 96 kHz / 192 kHz、YouTube なら 48 kHz です。そのため、例えば CD の音声信号を DVD や YouTube で使用するために、送信側か受信側のどちらかでサンプリング周波数を変換することになります。\nAD 変換時のオーバーサンプリングなどでもサンプリング周波数変換が使用されます。\nサンプリング周波数変換の概要 # デジタル信号は、時間方向・振幅方向それぞれに離散化された信号です。時間方向の離散化を標本化、振幅方向の離散化を量子化といいます。\nサンプリング周波数変換は、時間方向に離散化されたデータの間隔を変換する処理です。\nサンプリング周波数を下げるときは、1 個のサンプルを取り出すごとにそれに続くサンプルを捨て去ります。 サンプリング周波数を上げるときは、1 個のサンプルを取り出すごとに新たなデータを追加（挿入）します。 処理 処理名 処理方法 LPF カットオフ サンプリング周波数を下げる 間引き（デシメーション） 1 つのサンプルを取り出した後、続くサンプルを捨てる 変換後のナイキスト周波数 サンプリング周波数を上げる 補間（インタポレーション） 1 つのサンプルを取り出した後、0 を挿入する 変換前のナイキスト周波数 変換比は正の整数のみ # 周波数変換の比は必ず正の整数です。サンプリング周波数を下げる場合は「整数分の 1」、上げる場合は「整数倍」になります。\n「整数分の 1」「整数倍」ではない周波数へ変換したい場合は、間引きと補間を組み合わせて目的の周波数に変換します。\n間引きと補間の用語 # 処理 別名 係数の呼び方 サンプリング周波数を下げる 間引き・デシメーション 間引き係数 / Decimation Factor サンプリング周波数を上げる 補間・インタポレーション 補間係数 / Interpolation Factor 間引き（デシメーション） # 変換前のサンプリング周波数 $f_1$ を、低速な $f_2$ に変換する場合を考えます。\nダウンサンプリング # 1 個のサンプルに対して、それに続く $\\left(\\dfrac{f_1}{f_2} - 1\\right)$ 個を捨てます。この処理をダウンサンプリングといいます。\nダウンサンプリング・アップサンプリングという言葉は、文脈によっては間引き・補間全体を指すこともあるので注意が必要です。\nアンチエイリアシング（間引き前の LPF） # データを捨て去るだけでは、折り返し雑音により波形が歪んでしまいます。そのため、データを捨てる前にローパスフィルタをかける必要があります。これは標本化の際にアンチエイリアシングフィルタをかけるのと同じ考え方です。\nこのローパスフィルタを**間引きフィルタ（デシメーションフィルタ）**といいます。カットオフ周波数は変換後のナイキスト周波数 $f_2/2$ とします。\n補間（インタポレーション） # 変換前のサンプリング周波数 $f_1$ を、高速な $f_2$ に変換する場合を考えます。\nアップサンプリング # 各サンプルの後に、$\\left(\\dfrac{f_2}{f_1} - 1\\right)$ 個のサンプルを挿入します。追加するサンプルの値は 0 です。この処理をアップサンプリングといいます。\n0 を追加しただけでは波形はギザギザしています（折り返し雑音を拾っている状態）。\nアンチエイリアシング（補間後の LPF） # 折り返し雑音を除去するために、0 を挿入した後にローパスフィルタをかけます。カットオフ周波数は変換前のナイキスト周波数 $f_1/2$ とします。\nこのローパスフィルタを**補間フィルタ（インタポレーションフィルタ）**といいます。\nフィルタ設計例 # サンプリング周波数を 240 Hz から 960 Hz に上げる場合：\nサンプリング周波数：240 Hz 補間係数：4 ローパスフィルタ：FIR フィルタ（35 タップ、カットオフ周波数：120 Hz） カットオフ周波数は変換前のナイキスト周波数である 120 Hz に設定します。\nポイント： ローパスフィルタのカットオフ周波数は、間引きでも補間でも、低速側のナイキスト周波数です。\n一般的なサンプリング周波数変換 # 間引きや補間だけでは実現できない周波数変換を行うときは、間引きと補間を組み合わせます。\n周波数変換の手順 # $f_1$ から $f_2$ へ直接変換できないので、別の周波数 $f_3$ に補間してから間引きを行います。一時的に使用する周波数 $f_3$ は、$f_1$ と $f_2$ の最小公倍数です。\n$$ f_1 \\xrightarrow{\\text{補間}} f_3 \\xrightarrow{\\text{間引き}} f_2 $$ アンチエイリアシング（LPF は 1 回でよい） # 補間と間引きを 1 回ずつ行うため、ローパスフィルタを 2 回かけるように思われますが、実際には 1 回で大丈夫です。\nどちらもローパスフィルタなので、低い方のカットオフ周波数のフィルタを 1 回かければ折り返しひずみの原因となる信号を除去できます。\n$$ \\text{カットオフ周波数} = \\min\\!\\left(\\frac{f_1}{2},\\ \\frac{f_2}{2}\\right) $$$f_1$・$f_2$ のうちナイキスト周波数が低い方より高い成分を 1 つのローパスフィルタで取り除けば、折り返し雑音は発生しません。\nまとめ # 処理 カットオフ周波数 間引き（f₁ → f₂、f₁ \u0026gt; f₂） f₂ / 2（変換後ナイキスト周波数） 補間（f₁ → f₂、f₁ \u0026lt; f₂） f₁ / 2（変換前ナイキスト周波数） 間引き＋補間の組み合わせ min(f₁/2, f₂/2) カットオフ周波数は常に低速側のナイキスト周波数に設定することで、折り返し雑音を防ぐことができます。\n","date":"2020年10月7日","externalUrl":null,"permalink":"/posts/fs-convert/","section":"Posts","summary":"間引き（デシメーション）と補間（インタポレーション）によるサンプリング周波数変換の仕組みと、アンチエイリアシングフィルタの設計方針を解説します。","title":"サンプリング周波数変換","type":"posts"},{"content":"","date":"2020年10月7日","externalUrl":null,"permalink":"/tags/%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86/","section":"Tags","summary":"","title":"デジタル信号処理","type":"tags"},{"content":"","date":"2020年10月7日","externalUrl":null,"permalink":"/tags/%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF/","section":"Tags","summary":"","title":"フィルタ","type":"tags"},{"content":"","date":"2020年9月27日","externalUrl":null,"permalink":"/tags/%E3%82%A8%E3%82%A4%E3%83%AA%E3%82%A2%E3%82%B7%E3%83%B3%E3%82%B0/","section":"Tags","summary":"","title":"エイリアシング","type":"tags"},{"content":" アナログ量をデジタルシステムで処理・伝送するためには、アナログ信号を離散的な数値の列に変換する必要があります。\nサンプリング # 連続したアナログ信号から一定の時間間隔で信号を取り出すことをサンプリング（標本化）といいます。この一定の時間間隔がサンプリング周期で、その逆数がサンプリング周波数です。サンプリングを行うと、時間軸について離散化されます。\nアナログ信号をデジタル信号として扱うためには、取り出した値も離散化する必要があります。この記事では触れませんが、値の離散化のことを量子化といいます。\n標本化定理 # アナログ信号をデジタル信号に変換するとき、元の信号に含まれる周波数成分の 2倍よりも高い周波数 でサンプリング（標本化）すれば、元の信号を再現することができます。\nサンプリング対象の信号に含まれる最速の周波数成分に対して、十分な速度でサンプリングしなければ、元の信号を正確に表現できなくなります。サンプリング周波数が不十分なときは信号を復元できず、歪みが発生します。\nナイキスト周波数 # サンプリング周波数の 1/2 の周波数をナイキスト周波数といいます。\nサンプリング周波数が 120 Hz なら、ナイキスト周波数は 60 Hz となります。このとき、サンプリングしたい信号の周波数が 60 Hz よりも低ければ、正確に元の信号をサンプリングすることができます。\n60 Hz よりも高い成分が含まれていた場合、**折り返しひずみ（エイリアス）**となり、元の信号を正確に表せません。\n折り返しひずみ（エイリアシング） # サンプリング前の信号にナイキスト周波数よりも高い周波数成分が含まれていた場合、**折り返しひずみ（エイリアシング）**が発生します。\nナイキスト周波数よりも周波数が高い部分は、ナイキスト周波数を対称軸として低周波側に折り返されて現れます。折り返しひずみが発生すると元の信号に存在しない信号成分が現れるため、元の信号を正確に復元できなくなります。\n例えば、ナイキスト周波数が 60 Hz で、サンプリング前の信号に 80 Hz の成分が含まれていた場合を考えます。この 80 Hz の成分はナイキスト周波数で折り返され、サンプリング後には 40 Hz の信号に見えます。\n$$ 60 - (80 - 60) = 40 \\, \\text{[Hz]} $$ 10 Hz の場合 # 10 Hz はナイキスト周波数よりも小さいので、正常にサンプリングできます。\n80 Hz の場合 # 80 Hz はナイキスト周波数よりも大きいため、ナイキスト周波数（60 Hz）で折り返して 40 Hz になってしまいます。\nサンプリング前の信号で 80 Hz ですが、サンプリング後の信号は 40 Hz になります。\n10 Hz と 80 Hz の合成信号の場合 # 10 Hz の成分は正常にサンプリングできますが、80 Hz の成分は折り返して 40 Hz になります。そのため、サンプリング後の波形は、10 Hz と 40 Hz が合成された信号になります。\n40 Hz と 80 Hz の合成信号の場合 # 理論上 40 Hz の成分は正常にサンプリングできますが、80 Hz の成分は折り返して 40 Hz になります。サンプリング後は、元の 40 Hz と折り返しの 40 Hz が足し合わされてしまい、正確な信号を得ることはできません。\n元の 40 Hz と折り返しの 40 Hz が合成され、振幅が 0 になってしまうこともあります。（サンプリング後の波形は元の 40 Hz と 80 Hz の位相関係によって変化します。）\nアンチエイリアシングフィルタ # サンプリングする前に折り返しひずみの原因となる帯域をカットするためのローパスフィルタのことを、アンチエイリアシングフィルタといいます。\nフィルタは、LC フィルタなどのアナログフィルタでも、FIR フィルタなどのデジタルフィルタでも大丈夫です。\n合成信号の考察 # 先ほどの 10 Hz と 80 Hz の合成信号の場合、サンプリング後に折り返しの 40 Hz をカットするローパスフィルタをかけると 10 Hz の信号を分離することができます。\n一方で、40 Hz と 80 Hz の合成信号の場合は、サンプリング後に元の波形と折り返しによる波形を区別できないので、折り返し成分だけを分離することができません。そのため、サンプリング前に 80 Hz の信号を除去するアンチエイリアシングフィルタが必要になります。\nまとめ # 用語 説明 サンプリング アナログ信号から一定の時間間隔で信号を取り出して離散的な数値の列に変換すること サンプリング周波数 サンプリング周期の逆数 標本化定理 元の信号の最高周波数成分の 2 倍よりも高い周波数でサンプリングすれば元の信号を再現できる ナイキスト周波数 サンプリング周波数の 1/2。120 Hz サンプリング時は 60 Hz 折り返しひずみ ナイキスト周波数より高い成分がナイキスト周波数を対称軸として折り返されて現れる歪み アンチエイリアシングフィルタ 折り返しひずみの原因成分を除去するローパスフィルタ。サンプリング 前 に適用する必要がある ","date":"2020年9月27日","externalUrl":null,"permalink":"/posts/sampling-theorem/","section":"Posts","summary":"標本化定理（サンプリング定理）とナイキスト周波数、折り返しひずみ（エイリアシング）の基本概念を解説します。","title":"標本化定理と折り返しひずみ","type":"posts"},{"content":" てつふく について # 兵庫県神戸市出身、アラフォーのハードウェアエンジニアです。デジタルカメラの電子回路設計・産業用カメラ設計・画像処理を専門としています。\n仕事 # 現在はメーカーでデジタルカメラの電子回路設計に携わっています。\nデジタルカメラ・産業用カメラの回路設計 FPGA 開発（Xilinx Zynq / Vitis HLS） 画像処理（Python） ブログについて # **「メーカーで学んだ技術知識をわかりやすく発信する」**ことを目的に運営しています。\nFPGA・Raspberry Pi・組み込み開発・DSP・画像処理など、実務で得た知識を中心に書いています。技術は嘘をつかない、という信念のもと、正確さを大切にしています。\nスキル・使用技術 # 分野 技術 HDL VHDL プログラミング Python、C ボード Raspberry Pi、Xilinx Zynq OS Windows、Ubuntu カメラ SONY RX100M3、Google Pixel 趣味 # 沖縄旅行 / ロードバイク / キャンプ / ダッチオーブン料理\n夏が大好きです（38℃でも平気）。冬は 15℃ で辛くなります。\nSNS # X (Twitter): @tetsufuku81 このページは移行作業中につき、後日全面的にリライト予定です。\n","date":"2020年1月1日","externalUrl":null,"permalink":"/about/","section":"Silicon \u0026 Light Notes","summary":"","title":"About","type":"page"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"}]