Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】From Analog to Digital: Signal Simulation

2025年09月28日に「Dev.to」が公開したITニュース「From Analog to Digital: Signal Simulation」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

アナログ信号をデジタルに変換する過程をMATLABで解説。連続波をサンプリングで時間軸を離散化し、量子化で振幅を離散レベルに変換する。サンプリング周波数や量子化ビット数が多いほど品質は上がるが、データ量も増えるトレードオフがあることを示している。

出典: From Analog to Digital: Signal Simulation | Dev.to公開日:

ITニュース解説

我々の身の回りには、音や光、温度、湿度など、無限に連続して変化する情報があふれている。これらは「アナログ信号」と呼ばれ、時間とともに滑らかに、そして途切れることなく変化し続ける。しかし、コンピュータはこのような連続的な情報を直接扱うことができない。コンピュータが扱えるのは「デジタル信号」という、とびとびの値で表現された情報だけだ。デジタル信号は、0と1のような離散的な数値の組み合わせで表されるため、保存や伝送が容易で、ノイズにも強いというメリットがある。このため、スマートフォンで音楽を聴いたり、インターネットで動画を見たり、センサーからデータを収集したりする際など、ほとんどの現代のITシステムにおいて、アナログ信号をデジタル信号に変換するプロセスが不可欠となる。今回の解説では、アナログ信号をデジタル信号に変換する一連の仕組みを、シミュレーションを通して具体的に見ていく。

変換プロセスの最初のステップは「アナログ信号」そのものを理解することだ。シミュレーションでは、分かりやすい例として、100Hzの正弦波がアナログ信号として用いられる。正弦波は、多くの複雑な波形を構成する基本的な要素であり、周期的に滑らかに変化する波形を持つ。これは、マイクが拾う音波や、電波の波形など、現実世界に存在する多くの連続的な信号を単純化したモデルと考えることができる。この滑らかな波形を、コンピュータが理解できるデジタルな形に変えることが目標となる。

次に重要なステップが「サンプリング」だ。これは、連続的なアナログ信号を時間軸上で離散化する、つまり、連続した波形の中から特定の時間間隔で「点」を抜き取る作業である。ちょうど、映画のフィルムが連続した動きを「コマ」という静止画の連続で表現するのに似ている。サンプリングにおいて最も重要な要素が「サンプリング周波数(Fs)」であり、これは1秒間に何回信号の値を読み取るかを示す。このサンプリング周波数の選択には、「ナイキスト定理」という非常に重要なルールが存在する。ナイキスト定理は、元の信号が持つ最も高い周波数成分の少なくとも2倍のサンプリング周波数でサンプリングしなければ、信号が正しく再現できない、と定めている。今回の100Hzの正弦波の場合、ナイキスト周波数はその2倍である200Hzとなる。

ナイキスト定理がなぜ重要なのかを理解するため、異なるサンプリング周波数での結果を比較してみよう。もしサンプリング周波数をナイキスト周波数より低く、例えば150Hzに設定すると、取得されたデータは元の100Hzの正弦波とは全く異なる波形に見えてしまう。これは「エイリアシング」と呼ばれる現象で、元の信号が持っていた情報が失われ、あたかも低い周波数の別の信号であるかのように誤って認識されてしまう。まるで、高速で回転するタイヤが逆回転しているように見える現象に似ている。ナイキスト周波数と全く同じ200Hzでサンプリングすると、理論上は元の信号を再現できるが、取得される点の数が最小限であるため、位相(波の開始位置)によっては正確な情報を得るのが難しい場合もある。一方、サンプリング周波数をナイキスト周波数より十分高く、例えば1000Hzに設定すると、元の正弦波の形を非常に正確に再現できる。サンプリング周波数が高ければ高いほど、より多くの点から情報が得られるため、元の波形に忠実なデジタル表現が可能になる。しかし、その反面、取得するデータ量が増大するというトレードオフも生じる。

サンプリングによって時間軸が離散化された後、次のステップは「量子化」である。サンプリングされた各点は、それぞれ特定の振幅(波の高さ)を持っているが、これらの振幅はまだ連続的な値のままだ。量子化は、これらの連続的な振幅値を、あらかじめ定められた有限の「量子化レベル」に合わせて丸める作業である。ちょうど、身長を測る際に、厳密なミリメートル単位ではなく、「170cm台」というように、ある程度の範囲に区切って表現するのに似ている。シミュレーションでは、8、16、64といった異なるレベル数で量子化を試している。量子化レベルが少ない場合、例えば8レベルで量子化すると、波形は滑らかさを失い、階段状のギザギザとした形になる。これは、元の信号と量子化された信号の間に大きな差が生じることを意味し、「量子化ノイズ」と呼ばれる誤差が増大する。一方、量子化レベルを16、さらに64と増やしていくと、利用できる振幅の段階が増えるため、元の滑らかな波形により近い形で表現できるようになり、量子化ノイズは減少する。量子化レベルは、一般に「ビット数」で表現される。例えば、8レベルは3ビット(2の3乗)、16レベルは4ビット(2の4乗)、64レベルは6ビット(2の6乗)に対応する。ビット数が増えれば増えるほど、表現できるレベルの数が増え、信号の精度が向上するが、これもまた、後述するデータ量の増加につながる。

最後のステップは「エンコーディングとビットストリーム」だ。量子化によって離散的なレベルに丸められた各振幅値は、コンピュータが直接扱える「2進数」のデータに変換される。これがエンコーディングである。例えば、8レベル(3ビット)で量子化された値であれば、それぞれのレベルは3桁の2進数(例: 000, 001, ..., 111)で表現される。もし64レベル(6ビット)で量子化されていれば、それぞれのレベルは6桁の2進数で表現されることになる。この2進数の羅列が、最終的な「ビットストリーム」として出力される。ビットストリームは、まさにデジタル信号の最終形態であり、コンピュータはこの0と1の並びを処理し、保存し、伝送する。ビット数が多いほど、量子化の精度が高まり、元の信号に近い表現が可能になるが、その分、1つの値を表現するのに必要なビット数が増えるため、ビットストリーム全体のデータ量も増加する。

一連のアナログからデジタルへの変換プロセスを見てきたが、重要なのは、デジタル信号はアナログ信号の完璧なコピーではなく、常に「近似」であるという点だ。この近似の精度は、「サンプリング周波数」と「量子化のビット数」という二つの主要なパラメータによって決まる。サンプリング周波数を高くし、量子化のビット数を増やせば増やすほど、デジタル信号は元の analog 信号に忠実になり、品質は向上する。しかし、その代償として、生成されるデジタルデータのサイズは増大する。これは、より多くの情報を記録するために、より多くのストレージ容量や通信帯域が必要になることを意味する。したがって、システムを設計する際には、必要な信号の品質と、許容できるデータサイズや処理能力との間で、最適なバランスを見つけることが常に求められる。このトレードオフを理解し、適切にパラメータを設定することが、システムエンジニアとして非常に重要なスキルとなる。

関連コンテンツ

関連IT用語