• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:正弦波1KHzのFFTの最大、最少レベル(dB))

正弦波1KHzのFFTの最大、最少レベル(dB)

このQ&Aのポイント
  • 正弦波1KHzのFFTの最大、最少レベル(dB)についての解説
  • 正弦波1KHzのFFTの最小レベルはサンプリング数によって異なり、8192の場合は-166dB、4096の場合は-142dB、2048の場合は-118db、256の場合は-44dBである。
  • サンプリング数によって正弦波1KHzのFFTの最小レベルは変化することが分かった。

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

  • ベストアンサー
  • veryyoung
  • ベストアンサー率75% (65/86)
回答No.5

回答No.4 の補足欄のご要望に関してです。 前回答は、LTspice Version 4.22r で確認済みのものです。挙動が再現しない場合は、その箇所をご指摘ください。 なお、FFT Binomical Smoothing done before FFT ...の点数が 3 による 256点 -44dBの不都合も再現済みです。 SPICEエンジンから出力されるデータ桁数、時刻点数、また時刻が等間隔でない事なども確認してあります。 大変大雑把ですが、24bit量子化ノイズがサンプリング点数の平方根で改善されるという簡略モデルによれば、ノイズフロア対信号ピークは、次式になりそうです。 - 6.02 * 24 - 10 * log( サンプリング点数 ) [dBc] 数dBの誤差は生じそうですが、具体的には、 8192: -184dBc (信号が+20dBなら-164dB) 2048: -178dBc (信号が+20dBなら-158dB) 256: -168dBc (信号が+20dBなら-148dB) LTspiceシミュレーション値と大きな乖離は無いようです。前回報告の256点 -180dBc は対数表示上の錯視でした。平均ノイズは、本来振幅二乗のリニア目盛り上で平均すべきものですから、対数軸ではノイズフロアの帯の上縁に近い位置にあってしかるべきです。

bakabon_X
質問者

お礼

veryyoung さま ベストアンサーにして、解決ズミとします。 以上

bakabon_X
質問者

補足

veryyoung さま 具体的な、回答を頂きまして有難うございます。 >256: -168dBc (信号が+20dBなら-148dB) <--私のLTspiceの環境で、再度確認いたします。 私の質問の回答に、FFTの原理や、的外れの回答をされる方が居られましたので 質問の削除を考えましたが、貴方の回答が得られましたので目的が達せられました。 ヂスカッションもしたい所ですが、雑音が多いようなので、致しません。 以上

その他の回答 (4)

  • veryyoung
  • ベストアンサー率75% (65/86)
回答No.4

詳細が見えませんが、Maximum Timestep を 補足 6 ns に設定した以外は、LTspiceデフォルトのFFTだと仮定して回答いたします。以下の内容を試してみて下さい。 1)View→FFT Binomical Smoothing done before FFT ...の点数を 1 にする(デフォルト:3 )。 効果:サンプリング数 256 の場合のフロアも -160dB (-180dBc)くらいまで劇的に下がる筈です。 理由:特にサンプル点が少ない場合、隣接サンプル点のスムージングは、まずいですよね。 2).options plotwinsize=0 を回路図に書き入れる。 効果:サンプリング数に関わらず、高域のノイズが減少しフラットになる筈です。 理由:LTspiceのFFTはSPICEエンジンの出力データを用いたポストプロセッシングです。デフォルト設定においてSPICEの時間点数は圧縮されており、Maximum Timestep が 6 ns だからといって、その時間間隔でデータが受け渡されるわけでは無いようです(File→Exportで確認できます)。当該オプションにより無圧縮になります。内挿誤差が軽減される筈です。 上記二つで、サンプリング数の平方根に依存する、癖の無いフラットなノイズフロアが得られる筈です。このノイズはSPICEエンジンの出力データの分解能、単精度浮動小数点数(仮数部 23bit)十進7桁によるものだと思います。分解能は、以下のオプションにより改善可能です。 3).options numdgt=7 を書き入れる。 効果:ノイズフロアは、サンプリング数 256 においても -300dBcくらいまで落ちるようです。 理由: 仮数部 53bitに相当する十進16桁のデータがSPICEエンジンより出力されるようになります。

bakabon_X
質問者

補足

veryyang さま 1)View→FFT Binomical Smoothing done before FFT ...の点数を 1 にする(デフォルト:3 )。 効果:サンプリング数 256 の場合のフロアも -160dB (-180dBc)くらいまで劇的に下がる筈です。 理由:特にサンプル点が少ない場合、隣接サンプル点のスムージングは、まずいですよね。 <---『貴方は判っていません』とうの回答を頂きましたが、veryyang さまのこの回答は 私の質問にたいする明快な回答です。 FFTの設定に問題があるかも知れませんので、もし出来れば、貴方の回答をLTspiceで確認願えないでしょうか(FFTの条件としましては、Maximum Timestep を 補足 6 ns 以外は特に設定していません) LTspiceの利用、運用をしている方とこの問題でディスカッションしたくて、投稿しただけであり お手数であれば、ご回答を頂かなくても結構です。

  • DCI4
  • ベストアンサー率29% (448/1540)
回答No.3

(1)4096サンプリングの場合で説明しますと、サンプリング周波数は1KHz/20*4096Hzとなります。 ★回答2補足  根本的かんちがい 使い方 意味が わかってない 4096とは普通 サンプリング数=取り込む個数 である 取り込んだ サンプルの個数 2^12=4096 個 で DFT(FFT)を計算したと言う意味 サンプリング周波数とは関係ない 個数  あなたのかんちがい サンプリング周期=1/サンプリング周波数 サンプル数=計算のため取り込んだ個数 (DFT計算のため通常2^N 個とするだけ) たとえば 計算は 時間サンプル個数1024で  周波数サンプル個数が1024出てくる だけのこと 1024でもサンプリング周波数は  別設定 変わらんのが普通 8096でもサンプリング周波数は  別設定 変わらんのが普通 ※ソフトが勝手に データー処理上の都合で かってに 変えてれば別だが・・・ サンプリング周期→となりのデータとの時間間隔を表す値 サンプル数→まとめて計算に使う個数 -fs~0~fs までのグラフのデーター個数 がサンプル数 (2)私が議論したいと思いました事は、サンプリング周波数が1/2になりますと、フロアーレベルが約24dB上昇していることです。 ★回答2補足 サンプリング周波数が1/2 近くになりますと、フロアーレベルが上がるのは 一般に 時間 時系列データー(サンプルデーターそのもの)に  ちゃんと帯域制限が行われていないと折り返し歪みがのる仕組みである 標本化定理 折り返し歪み を 検索 参照 (3)被測定 正弦波の周波数は サンプル個数と サンプリング周波数と関係あるわけ 精度におよぼす影響が別途出る 前回説明した あなたは6nsでとりこんだと言っている  以下と想定している 1/サンプリング周波数=6ns サンプリング周期(サンプリング時間) サンプリング期間ではない  サンプリング期間は取り込んだ波形の切り出し時間 サンプリング時間×サンプル個数=サンプリング期間 図を見る

  • DCI4
  • ベストアンサー率29% (448/1540)
回答No.2

1KHz、20波形です、この波形を、8196、4096、2048etcのサンプリングを 行ないます。 サンプリング周波数と、1KHzの波形の位相は同期しています。 その同期の精度は、最大約6nsです。 ★回答 補足 サンプリング数   2^N です   8196、4096、2048etc サンプリング周期 (1÷サンプリング周波数)とは違う 取り込みが 同期してても 1Kの整数倍率でなければ 端数は出る spiceが 時系列波形を計算するときに使用するサンプリング周期である(FFT計算の) 貴君が 同期の精度は、最大約6nsと言うならば 6nsの整数倍でサンプリングしてると推定可能・・・すると サンプリング周波数は整数倍率ではないはず LTspice仕様をちゃんと確認するべきでは? ※ただし LTspice仕様はこちらで見てない 使用してないから

bakabon_X
質問者

補足

>6nsの整数倍でサンプリングしてると推定可能・・・すると サンプリング周波数は整数倍率ではないはず <---LTspiceのFFTのサンプリング仕様をご覧になれば、そのような理論(推論)は 成り立たないと思います。 4096サンプリングの場合で説明しますと、サンプリング周波数は1KHz/20*4096Hzとなります。 即ち、204800Hz(約4883nsの周期)となります。この204800Hzのサンプリング周波数と、 1KHzの20個の波形は同期していますが、但し最大6nsのズレが存在します。 サンプリングのばらつきは、6ns/4883nsとなります(もし計算ミスがあれば、訂正ください)。 ここで、私が議論したいと思いました事は、サンプリング周波数が1/2になりますと、フロアーレベルが約24dB上昇していることです。 LTspiceのFFTの使い方に付きまして、投稿しているわけであり、FFTの理論を議論している 訳ではありません。(FFTの理論、アルゴリズムは、数学者の領域です) 以上

  • DCI4
  • ベストアンサー率29% (448/1540)
回答No.1

サンプリング数依存性に付きまして、コメント頂けますと大変有難いです。 ★回答 添付は荒くて見えない 一般的に以下となる 窓関数  打ち切り誤差 2^N がサンプル数 Nは任意 これをDFTするわけだから データーは適当に打ち切ってるわけ(読み込みの仕方で変わるわけ) よってサイドローブ は一定にはなりません https://www.onosokki.co.jp/HP-WK/c_support/newreport/analyzer/FFT4/images/fig6_7.gif そのつど読み込むため打ち切りが生ずる よってノイズフロアーはつねに変わる LTspice内部の FFT用の 時系列データーの読み込みの仕様で変わってしまうわけです 以下などの手法を使う (1)打ち切りデーターがそのつど違う場合は最適な窓関数を選定して 誤差を抑える (2)重複加算法などを使う オーバーラップ加算法 http://jp.mathworks.com/help/signal/ref/fftfilt.html (3)分析想定周波数に合わせサンプル数を調整してしまう 検索キーワード;窓関数 打ち切り誤差 http://www.ic.is.tohoku.ac.jp/~swk/lecture/yaruodsp/win.html 計測信号処理(2012) http://www.appi.keio.ac.jp/?page_id=437

bakabon_X
質問者

補足

LTspiceの波形生成の仕様は、既に記載しましたが下記です。 1KHz、20波形です、この波形を、8196、4096、2048etcのサンプリングを 行ないます。 サンプリング周波数と、1KHzの波形の位相は同期しています。 その同期の精度は、最大約6nsです。 よって、この条件におきまして、FFTの波形は、一定値であり変化しません。 以上

関連するQ&A

専門家に質問してみよう