20kHz正弦波をCDで再生すると振幅が小さいところと大きいところができるのはなぜ?

このQ&Aのポイント
  • 20kHzを44.1kHzでサンプリングした場合、振幅が小さい区間と大きい区間ができる。LPFを掛けると振幅の小さいところと大きいところが繰り返し出てくる。
  • 長岡鉄男氏の実験結果や正弦波信号を記録したCDのオシロ観測の結果を参考に解説。
  • 素人でも分かるように解説いたします。
回答を見る
  • ベストアンサー

20kHz正弦波をCDで再生するした場合 その2

昨日、同タイトルで質問し理解は深まったのですが、一晩考えて、やはり釈然のしないところがあるので、再質問いたします。 20kHzを44.1kHzでサンプリングした場合、添付の図のように振幅が小さい区間(図左)と大きい区間(図右)ができると思います。 このようなデータ(信号)にLPFを掛けた場合、20kHz成分は抽出できるものの、振幅の小さいところと大きいところが繰り返し出て来てしまうと思うのですが、やはり考え違いでしょうか? ご回答の中に、長岡鉄男氏の実験結果や正弦波信号を記録したCDのオシロ観測のお話しがあったので、何か勘違いしているのだと思いますが、素人が分かるように解説いただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • wek00
  • ベストアンサー率62% (90/145)
回答No.2

ナイキスト周波数fnぴったりの信号のサンプリング結果は位相に敏感です。観測される振幅は元信号の0~1倍となります。元の信号が忠実に再現される保障はありません。 では、周波数fがナイキスト周波数より低い場合は? うなりのような現象が生じますが、こういう波形の信号なのだ、と捉えるるならこれは周波数fと周波数fn+(fn-f)(fnをはさんで反対側の位置。f+2*(fn-f)とも書ける)の波形の和です。こういう波形の信号なのだ、と捉えるなら(強調)、標本化定理を満たしていません。ですが、ナイキスト周波数がfnであることを考慮すれば元の信号は再現できる、はずです。例え周波数が fn-10^-12 Hzであっても。 周波数がいくらいくらの正弦波というのは無限に続くもの以外ありません。そして、そういうものを忠実に再現する処理系のレイテンシは無限大です。 現実には、フィルタにしてもDA変換機にしても局所的な観測しかせずにテキトーに(暴言)やりますから  > 振幅の小さいところと大きいところが繰り返し出て という評価になることもあるでしょう。 ただの標本化よりも多くのこと――有限時間の観測で概ね波の形が取れていること――を求められるような場合に、ただ標本化定理を満たすだけでは不十分じゃないの?と言われればそれはそのとおりです。 本件と関係ないかもしれませんが。 低サンプリングレートで再生したものをその何倍かのサンプリングレートで録音し周波数分布を見てみると、ソースや機材の仕様やドライバの品質設定にもよるでしょうが、大元のソースには無かったであろう対称形のものが見えたりします。 WaveGeneでナイキスト周波数近くからスイープした信号を発生させ WaveSpectraで解析しプロットしてみると、 再生側サンプリングレート22050Hz、録音対象ステレオミキサ、録音側サンプリングレート192000Hzという条件では、10本くらいのピークが動いていきます。 (参考データ:https://www.axfc.net/u/3973871

Aleph777
質問者

お礼

専門的かつ詳しい解説をいただき、ありがとうございます。 専門的過ぎて十分に理解はできておりませんが、サンプリングの1/2に限りなく近い周波数をAD→DA&フィルタリングすると、振幅は0~1倍になると理解しました。これは、直感的に理解できます。 ここで、2つ質問があるのですが、よろしければ教えてください。 1)上記の場合、ホルダーを付けたフィルタリング前の波形は、最大、元波形の振幅の矩形波になるかと思います。この時、フィルタリング前の波形の基本周波数成分は1を超えると思いますが、この考えに間違えはありませんか? もちろん、フィルタリングで1を超えなくすることは容易だと思いますが。 2)20kHzの波形を44.1kHzでサンプリングした場合にもうねりは生じると思います。フィルタの特性によって多少の違いはあるかと思いますが、このうねりの最大最小はどの程度になるのでしょうか? 作図した絵を眺めると、最小振幅は最大振幅の1/3~1/4になるような感じがします。

その他の回答 (1)

  • SRLeonard
  • ベストアンサー率56% (179/316)
回答No.1

>やはり釈然のしないところがあるので、再質問いたします。 どう説明すれば、「感覚的に理解できるのか?」、「しっくり来るのか?」ということになってしまうと思うので、私なりの説明をしてみます。 まず、 >20kHzを44.1kHzでサンプリングした場合、添付の図のように振幅が小さい区間(図左)と大きい区間(図右)ができると思います。 とのことですが、この現象はサンプリング周波数ギリギリの周波数に限らず、低周波の入力信号をサンプリングしても同様であって、単なる感覚的な程度問題だと思います。 重要なことは、「振幅が小さい区間」と「振幅が大きい区間」をランダムにサンプリングしているか?ということです。 例えば、400Hzを16Hzで振幅変調した波形(これは、電話のリングバックトーンです)を想定してみましょう。 これは、原波形自体が同一周波数でありながら波高値が変動している音源です。この波形をサンプリング周波数以上でサンプリングすれば、振幅変調のもととなる周波数の400Hzも変調周波数の16Hzも検出できます。 sin波とsin波の積は、sin波とcos波の積和で表現できます。 他方、純粋な単一周波数の入力信号をサンプリングした結果、波高値のピーク付近でサンプリングすることもあれば、振幅ゼロであることもあるわけです。 >20kHz成分は抽出できるものの A/D→D/A変換の際に必要なことは、以下2点だと思います。 (1)元音源の周波数を抽出すること (2)元音源に無い周波数を抽出しないこと あなたは、(1)の観点からサンプリング定理を理解されているようですが、(2)の視点も検討に含めたら如何かと思います。 質問分にある画像の2波長程度ではなく、もう少し長いスパンで現象を観測した方が良いと思います。

Aleph777
質問者

補足

ご回答ありがとうございます。 >この現象はサンプリング周波数ギリギリの周波数に限らず、低周波の入力信号をサンプリングしても同様であって、単なる感覚的な程度問題だと思います。 重要なことは、「振幅が小さい区間」と「振幅が大きい区間」をランダムにサンプリングしているか?ということです。 >純粋な単一周波数の入力信号をサンプリングした結果、波高値のピーク付近でサンプリングすることもあれば、振幅ゼロであることもあるわけです。 上記コメントは、原波形の周波数に関わらず(もちろん、サンプリング周波数の1/2未満)、振幅の変動は存在すると理解してよろしいでしょうか? 20kHzで振幅変動があるのであれば、それ以下の周波数でも変動があるのは理解できます。但し、低周波になればなるほど変動の大きさは小さくなるはずです。 CD再生からはちょっと離れますが、仮にカットオフ周波数までは減衰せず、カットオフ周波数以上は完全に除去できる理想的なLPFがあったと仮定します。 ここで、22kHzで振幅一定の正弦波を44.1kHzでサンプリングした場合を想定してみました。22kHzはサンプリング定理では抽出可能な周波数の範疇です。 この場合、サンプリング(AD)したデータは、長い区間0付近にあり、+-を繰り返しながら徐々に値は大きくなり、今度は最大振幅近傍で長く留まるということになります。 このようなサンプリングデータをDA変換し、上記仮想の理想的LPFを掛けたとしても、22kHzは抽出できるものの、長周期(22kHzに対して)の振幅変動を伴うことになり、振幅一定にはなりません。 これは、サンプリング周波数の1/2に限りなく近い波形という極端な例ですが、程度こそ違うものの、20kHzやそれ以下の周波数でも同じ現象は発生すると思うわけです。 振幅変動が±1%とか±5%以下なら実用上問題にならないとしても、図形から推測すると、20kHzではそれらを遥かに上回る変動が発生するように思う訳です。(残念ながら、数値化できる能力は持ち合わせていませんが) この考え方は、長岡鉄男氏の実験結果や正弦波のデータを納めたCDのオシロ観測結果に反するので、何か考え違いがあるのかもしれません。 結局、同じ疑問の繰り返しになってしまい、すみません。 尚、振幅変調の話は、十分理解できませんでしたが、私の疑問は原波形が振幅一定の正弦波である場合の再現性についてです。

関連するQ&A

  • 20kHz正弦波をCDで再生するとどうなりますか

    デジタル音響の開発者または詳しい方への質問です。 今更ですが、CDにおける高周波成分の再現性について疑問があります。 サンプリング周波数の1/2以下の周波数しか記録・再生できないというサンプリング定理については、ある程度理解しているつもりです。 また、サンプリング周波数の1/2以上の信号をAD変換するとエリアシングが発生するということも、原理として理解しています。 疑問は44.1kHzで20kHzないしそれに近い周波数の信号をサンプリングして記録し、記録したデータをDA変換した場合、どの程度忠実に原波形が再現できるかということです。 20kHzを44.1kHzでサンプリングすると、1周期に2.205回しかサンプリングできません。サンプリングデータを直線でつないでも、原周波数成分は残るものの、正弦波とはかけ離れた波形になってしまいます。 20kHzまで聞こえる人は稀ですし、聞こえても相当減衰しているので、音楽再生では大きな問題にならないかもしれませんが、13kHzだと大抵の人は聞こえるし、感度もある程度あります。13kHzの場合、1周期のサンプル数は約3.4個になりますが、これでも正弦波とはかなり違います。 仮に、まずまず正弦波に近いと言えるのが1周期5サンプル以上だとすると、44.1kHzで正弦波として記録再生できるのは、せいぜい9kHz程度ということになってしまいますが、なにか考え違いをしているでしょうか? あるいは、高度なデジタル信号処理技術によって、20kHzないしそれに近い周波数も正弦波に近い形で再現できるのでしょうか? サンプリング周波数の1/2に近い高周波信号の記録・再生について図解しているサイト等があればURLをご提示いただけると幸いです。 当方、↓このようなサイトは見つけました。 http://www2.oninet.ne.jp/ts0905/deeg/deeg11.htm

  • 振幅を求めるのに最適な窓関数

    サンプリング周期1usで収集した10万点(0.1秒間連続測定)のデータがあります。 これは正弦波信号+ノイズというもので、正弦波の周波数は約100kHzです。 この正弦波の時間的なゆらぎを求めたいので、例えば5万点づつにデータを分割し、その5万点にDFTを行ってピークとなる振幅を求める方法を考えました。 この場合5万点のデータ数だと周波数分解能は100Hzとなるため、もし本来の周波数が例えば100.03kHzだとするとその振幅情報は本来の振幅に比べてかなりずれてしまいます。 これは解析対象区間に含まれる正弦波の数が整数個でないことに起因するのですが、このような場合窓関数を使うように言われていますが、振幅の誤差が1%以下とするためにはどのような窓関数を使ったらよいでしょうか? または、別の方法で振幅を1%以下の精度で求められるという情報でも助かります。

  • 正弦波に乗っているノイズ成分の取り出し方

    正弦波に乗っている(重畳)ノイズを抜き出して観測したいのですが、どのような回路で対応すればよいのでしょうか。 例えば60Hzに1KHzが乗っている場合など1KHzを抜き出す。 どうぞよろしくお願いします。

  • オシロスコープと信号発生器について

    先日も同じような質問をしましたが, 違う状況で同じような現象が起こってしまったので, 再度,質問させてください. 抵抗の両端に正弦波信号を入力して, その抵抗の両端の電圧をオシロスコープで観測しています. 当たり前のことですが,本来なら, 発信器で発生させた電圧振幅をオシロで観測できるはずですが, 周波数が10MHzを越えたあたりから, 観測される振幅が減数していまいます. どのような原因が考えられますでしょうか? ちなみに発信器の入力端子で分岐コネクタを用いて, オシロと抵抗の各々に信号を送っています. オシロの入力インピーダンス:50Ω 16pF 被測定抵抗:1MΩ

  • オシロとテスタの電圧比較

    初歩的な質問ですみません。 オシロスコープとファンクションジェネレータを接続し、入力波形の観測をしました。その際波形の比較として電圧値をテスタ(アナログ)で図ったのですが、 出力側が100Hzの場合 オシロでは振幅:2V,周期:6×10^-3,周波数:166.67s テスタ値:1V 出力側が10kHzの場合 オシロは振幅:20V,周期:6×10^-5,周波数:16,666.67s テスタ値:0.5V という結果が出てきました。 100Hzでの場合、オシロの振幅とテスタ値が変わりないので正しい結果が出ているだろうと考察したのですが、10kHzの場合、振幅とテスタ値があまりにも違うので間違っているのかと思いました。 周波数が100→10kHzと増えたので変化するのかなとも考えたのですがあまりにも違いすぎるのでこれも正しくないんだろうと思います。 (まず、テスタとの誤差があるのに値が近い(100Hz間)というのにも違和感があります) 回答して頂けたら幸いです。

  • 標本化定理(サンプリング定理、ナイキストノ定理)について

    標本化定理(サンプリング定理、ナイキストノ定理)について教えてください。 ”あるアナログ的な信号をデジタルデータにサンプリングする場合、原信号の各周波数成分をすべて正確にサンプリングするためには、原周波数の2倍以上のサンプリング周波数が必要となる。これを標本化定理という。”というのが基本的な説明だと思います。 この中で『2倍以上の』という表現がありますが、この点が疑問になっています。 例えば、20kHzのSin波を40kHzでサンプリングしたとして、サンプリングする点が丁度サイン波の振幅0の点だった場合、元のSin波の周波数は分かりますが、振幅は一意に決められないと思います。原信号を振幅も含めて復元するには、『2倍より大きい』周波数でサンプリングする必要があると考えるべきでしょうか?『2倍以上』という表現は厳密には正しくないと考えて良いのでしょうか? また、そもそもサンプリング定理は振幅情報を再現しないということであれば、疑問は解消されるのですが、その点はどうなんでしょうか?? どなたかご教授の程お願いいたします。

  • 1bitΔΣ型DA変換のノイズ成分について

    表題に関連して、以前何度か質問させて頂いております。理解は少しずつ進んでいると思うのですが、まだ十分わかっておりません。再度の質問をお許しください。オーディオ関連の質問ですが、音質の善し悪しとは無関係の純粋に技術的な興味ですのでこちらのカテゴリで質問させて頂きます。 << 背景 >> 疑問の発端は、1bitΔΣ型DA変換が何故fs/f以上の分解能が得られるのか、という点です。例えば10kHzの正弦波を3Mbpsのビットストリームで表現しようとする場合、fs/fは300倍しかありませんが、現実には16bitを超える分解能を実現できています。何故そんなことができるのか、オーディオ用のΔΣ型DA変換が登場した何十年か前からずっと疑問に思っておりまして、これを理解したいと思っています。 前回ここで質問させて頂き、1bitΔΣ型DA変換ではノイズシェーピングのフィードバック動作によって10kHzの正弦波が毎周期同一とはならず、その結果高い分解能を得ているらしい、という所までわかってきました。今回の質問は、このノイズシェーピング動作が低周波のノイズを発生することにならないか、という疑問に関するものです。 << 質問 >> 3Mbpsの単純なPDMでは2^16通りの振幅の10kHzの正弦波を表現できませんら、1bitΔΣ型DA変換ではノイズシェーピングのフィードバック動作により10kHzの正弦波に低周波の揺らぎを与ているのだと思います。そうだとして、ノイズシェーピングのフィードバック動作によって生じる低周波の揺らぎは、スペクトルとしては低周波の成分を持たず、その後理想のLPFを通せば理論的には揺らぎは除去されて、10kHzの、振幅を調整された、安定した正弦波になるのでしょうか? ======================= 低周波の成分を持たない低周波の揺らぎというのは、AM変調された高周波のようなものを想像しています。 << 補足 >> アナログ信号をデジタル化する場合、横(時間)軸と縦(振幅)軸を量子化すると思います。時間軸の量子化はサンプリング定理で説明されますが、縦(振幅)軸を量子化について説明したものは少ないような気がします、縦(振幅)軸にもサンプリング定理のような説明があると良いのですが。

  • スペクトラム図

    あるアナログ信号がサンプリングされて離散時間信号になっているデータ(ここでは、sample.vcとします)があります。それをフーリエ変換して得られた複素スペクトラムの周波数成分の絶対値をとってそのデータを使い、スペクトラムを表示させました。sample.vcは1kHzと6kHzの正弦波を足しあわせたもので、出力結果は2kHzと6kHzのスペクトラムがグーンと飛び抜けた図になりました。これであってるのでしょうか?僕的には3kHz辺りでグーンと飛び抜けると予想してたのでちょっとわからなくなりました。どうなんでしょう?

  • ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの振幅値に

    ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの振幅値について教えて下さい。 今想定している離散フーリエ変換の式は一般的なもので Σ(k=0~N-1) f(k)exp(-2πkni/N) を考えています。 また、離散フーリエ変換して得られるスペクトルは √(Re^2+Im^2) で計算します。 離散フーリエ変換を適用する関数を、 振幅1の直流、及び振幅1で周波数5[Hz]の正弦波とします。 (この2つの信号は別々の信号で合成されていません。) サンプリング周波数を20[Hz]とした場合、サンプリングして得られるデータ列はそれぞれ、 直流: 「1, 1, 1, 1」 正弦波: 「0, 1, 0, -1」 となると想定されます。 (正弦波をサンプリングする場合は位相が関わってきますが、今回は気にしないで下さい。) このデータ列に対して上記の離散フーリエ変換を適用した場合、 得られるフーリエスペクトルの振幅値はそれぞれ、 直流: 「4」(直流のフーリエスペクトルの振幅値値) 正弦波: 「2」(5[Hz]のフーリエスペクトルの振幅値) となります。 (データ点数は上の通り4点) ここで質問なのですが、 離散フーリエ変換して得られるスペクトルの振幅値から元の関数の振幅値を求める場合、 フーリエスペクトルをサンプリングの総データ点数で割ることは数学的に納得できます。 しかしこの例の場合、フーリエスペクトルを総データ点数で割ると、 直流: 「4 -> 1」 正弦波: 「2 -> 0.5」 となってしまい、直流は正しいのですが、正弦波の元の振幅値を正確に求めることは出来ません。 この例の場合、フーリエスペクトルの振幅値から正弦波の振幅値を正しく求めるには、 「フーリエスペクトルの振幅値*2/データ点数」 としてやらなければいけません。 上記のことに関して、なぜこのようになるのかを(2をかける理由を)教えて頂けないでしょうか。 当方、数学についてはあまり詳しくないため、簡単に説明して頂けると幸いです。

  • フーリエスペクトルの振幅について

    ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの 振幅値について教えて下さい。 今想定している離散フーリエ変換の式は一般的なもので Σ(k=0~N-1) f(k)exp(-2πkni/N) を考えています。 また、離散フーリエ変換して得られるスペクトルは √(Re^2+Im^2) で計算します。 離散フーリエ変換を適用する関数を、 振幅1の直流、及び振幅1で周波数5[Hz]の正弦波とします。 (この2つの信号は別々の信号で合成されていません。) サンプリング周波数を20[Hz]とした場合、 サンプリングして得られるデータ列はそれぞれ、 直流: 「1, 1, 1, 1」 正弦波: 「0, 1, 0, -1」 となると想定されます。 (正弦波をサンプリングする場合は位相が関わってきますが、 今回は気にしないで下さい。) このデータ列に対して上記の離散フーリエ変換を適用した場合、 得られるフーリエスペクトルの振幅値はそれぞれ、 直流: 「4」(直流のフーリエスペクトルの振幅値値) 正弦波: 「2」(5[Hz]のフーリエスペクトルの振幅値) となります。 (データ点数は上の通り4点) ここで質問なのですが、 離散フーリエ変換して得られるスペクトルの振幅値から 元の関数の振幅値を求める場合、 フーリエスペクトルをサンプリングの総データ点数で割ることは 数学的に納得できます。 しかしこの例の場合、フーリエスペクトルを総データ点数で割ると、 直流: 「4 -> 1」 正弦波: 「2 -> 0.5」 となってしまい、直流は正しいのですが、 正弦波の元の振幅値を正確に求めることは出来ません。 フーリエスペクトルの振幅値から正弦波の振幅値を正しく求めるには、 「フーリエスペクトルの振幅値*2/データ点数」 としてやらなければいけません。 上記のことに関して、 なぜこのようになるのかを(2をかける理由を)教えて頂けないでしょうか。