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

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

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

今日は、 正弦波1KHz(ピーク値:14.142V、20サイクル)のFFTをLTspiceで行ないますと、サンプリング 数によりまして、そのフロアーレベル(ピーク値以外の周波数成分)は、下記の如く変化します。 添付ファイル参照 Q1) この、フロアーレベルのサンプリング数依存性に付きまして、コメント頂けますと 大変有難いです。 ====================== サンプリング数   フロアーレベル(LTspiceの読取値) 8192 -166dB 4096 -142dB 2048 -118db ------ ------ 256 -44dB ======================= 以上、宜しくお願いします。

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

  • ベストアンサー
  • 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

  • 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

  • FFT分析、成分の最大値

    FFTで周波数成分分析を作っているところなのですが疑問があります 例えば、以下の信号をFFTした場合 振幅0-3V 矩形波 *かなり理想形 周波数 10Khz 10KHz 2.0V  30KHz 0.7V  50KHz 0.4V  ... とかの周波数成分が分析できました 10Kが基本周波数になるので最大振幅になっています その振幅値なのですが、 今、信号振幅が3.0Vだと2.0Vと算出は正しいのでしょうか 最大成分だから。3.0V以上になるような気がします 理想波形なら、何Vが正解でしょうか? もしかして、2.0vではなく倍の4.0Vが正解でしょうか?

  • 40 Hz - 100 kHz( - 16 dB

    あるスピーカーの資料を読んでいたら 再生周波数特性 40 Hz - 100 kHz( - 16 dB), 45 Hz - 80 kHz( - 10 dB) と書いてありましたぁ?-16dB??? 再生周波数ってー何dBまで言っていいのでしょうか?

  • FFTを使って異なるサンプリング周波数での周波数強度について

    100Hzのsin波に対してFFTを行い周波数スペクトルを出したときのことです。 解析条件 サンプリング周波数・・・・44.1kHz , 22.1kHz FFTの点数・・・32768点 窓関数・・・ハニング窓関数 まず、サンプリング周波数44.1kHzで解析を行い、100Hzにメインローブが現れていました。 次に、サンプリング周波数22.1kHz以外は同様の解析条件で解析を行ったのですが、サンプリング周波数44.1kHzに比べて、100Hzのスペクトル強度が下がっていました。また、サイドローブは44.1kHzに比べて上がっていました。 スペクトル強度がサンプリング周波数によって変化するというのはありえるのでしょうか? それとも、私の組んでいるプログラムが間違っているという事なのでしょうか?どなたかご教授下さい。よろしくお願いします。

  • 周波数解析のスペクトルについて

    waveファイルで取り込んだ音響データを、FFTを用いて周波数解析を行っています。 元のwaveファイルのデータは、ピーク値で20000示す時があるデータが入っているのですが、 そのFFTの結果が5000000など元の値とは桁違いの数字が出てしまいます。 これはなぜなのでしょうか? よろしくお願いします。 元データ サンプリング周波数:44.1kHz FFT解析条件 サンプル数:2048 窓:ハニング

  • MATLABによるFFTと位相スペクトルについて

    純粋な正弦波信号 y=sin2πft ただし周波数f=500MHz をサンプリング周波数2.5GHz,サンプリング数128,256,512,1024の四パターンMATLABでFFTし、パワースペクトルと位相スペクトルを求めました。 結果、パワースペクトルは予想通り500MHzでピーク値をとったのですが、位相スペクトルは各サンプリング数ごとに全く違う値を取りました。 というわけで、 (1)理論上、正弦波の位相スペクトルはどのような値になるのか (2)なぜサンプリング数ごとに位相スペクトルの結果が大きく変わったのか この二点をご教授ください。よろしくおねがいします。

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

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

  • FFTを使って信号から特定の周波数を抜き去る方法

    FFTを用いてある時系列データから特定の周波数の成分を抜き去ろうと思っていますが、 うまくいかないのでお伺いします。 調べてみると、スペクトルを出すとき、例えば同じ振幅で周波数の異なるの正弦波を 10個入れても全て同じ振幅にならず、振幅の大きさにばらつきが出ていて周波数成 分の成分の推定がうまくいっていないようです。FFTの2乗のデータを小さな周波数区 間で積分してスペクトル密度にしても、先ほどの10個の正弦波の振幅がそろわない のと、周波数推定が悪くなりうまく、引き去れなくなっています。 よくある状況だと思いますが、どういう工夫が必要なのでしょうか。 ちなみに、FFTのルーチンはnumerical recipeとFFTWの二つで試しました。

  • フーリエ変換の最大周波数

    5kHzでAD変換した信号があり、解析したい成分は0~1kHzに含まれています。 上記の前提で、256点で128点オーバーラップしながらFFT処理を行った場合、FFTを行うデータ数をN、サンプリング間隔Δt(1/5kHz=0.0002sec)とした時、 分解能 Δf=1/N*Δt=19.53 最大周波数 Fmax=(N/2NΔt)-(1-Δf)=2480.47 という計算式をインターネット上で見つけました。つまり0~2480Hzまで20Hzごとのパワースペクトル時間変化が128点データが並ぶということになると思うのですが・・・・ 一方、最大周波数はFFTデータ数の半分だという記載も見つけました。すると、最大周波数は半分も128Hzだと思うのですが、どちらが正しいのでしょうか?

  • FFTの境界における値

    サンプリング周波数fsでサンプリングしたデータをFFTして得られる 結果についての質問です。 0< f < fs/2 の範囲は正の周波数成分となりますが、境界であるfs/2に 現れる計算結果は、正と負の周波数成分の和になるのでしょうか。 よろしくお願い致します。