質問: エクセルでのfftについて 今圧電ブザーを発振回路につないで発振させて,その出力をエクセルでfftを行って共振周波数を調べています。ここで圧電ブザーにペンキを薄く塗って質量が増大することで共振周波数が下がると考えて実際に行ってみたら変化が見られませんでした。自分としては機械的には共振周波数が下がっていると思うのですが、それが検出できませんでした。これは何が原因でしょうか?数hz程度の小さい変化だとしたらfftでは分からないものなのでしょうか? ちなみにサンプリング時間は5.12msで、サンプリング周期は0.01msです。この二つの意味もよく分かりません。 あまりうまく質問できてないかもしれませんがどなたかお答えください。よろしくお願いします。
回答: 変化が数hzであれば、no.1さんのいう通りfftではかなり難しいでしょう。 >ちなみにサンプリング時間は5.12msで、サンプリング周期は0.01msです。この二つの意味もよく分かりません。 サンプリング周期というのは、データを取り込む間隔を意味しています。時間間隔とかサンプリングレイトという言い方もあります。この場合は5.12ms秒おきにデータを1個取り込んでいるということです。 またディジタル解析では無限個のデータを解析することはできませんので、一定のデータ数が必要です。 サンプリング時間はデータを取り込んだ時間長さを意味しており、実際取り込んだデータ数は、サンプリング時間をサンプリング周期で割ってやると、解析用に取り込んだデータ個数が求められます。 よって、質問文のケースでは512個のデータを使用しています。 なお、fft(高速フーリエ変換)では、このデータ個数が2の累乗(2^n)であることが必要です。 だからfftでは512個、1024個、2048個.....のデータを使用して解析するのが普通です。 fftは周波数分析に使用される方法ですが、ディジタル上の解析手法ですので、結果は離散値(とびとびの数値)になります。 一見連続スペクトルと思われるfftの結果も実際は棒グラフを連続的に示したものに過ぎません。 fft解析では周波数軸上で等間隔のデータとなります。この等間隔の大きさを周波数分解能といいます。 周波数分解能をδfという記号で表しますと、fftの周波数軸上の値は小さい方から0,δf,δf*2,δf*3,δf*4,....となります。 周波数分解能は取り込んだ時間の長さの逆数になりますので、約195hzとなります。 要するに今の計測条件では195hzおきの周波数でしか計測できないということになり、それ以下の周波数の差は誤差に含まれてしまいます。 逆に理論的に考えると1hz程度の精度で計測をしたいのなら、1秒の計測が必要になりますので、サンプリング周期を同じ条件で行うには10万個以上のデータを取り込む必要があります。fftで解析するには、2の累乗のデータが必要ですので、131072個のデータを使用することになります。 バージョンや使用パソコンのメモリ条件によっても違うかもしれませんが、これほど多量のデータの作図はエクセル上の問題でできないような気がします。 またデータ個数を512個にした場合、サンプリング時間を1秒にするには、サンプリング周期を約1.95msにしてやる必要があります。 ここで、fftではサンプリング周波数(サンプリング周期の逆数)の半分以下の周波数範囲でしか解析できませんので、約256hz以下の周波数範囲でしか計測できませんので、対象周波数がそれより高い場合は、計測自体無理となります。 ペンキの重量程度でどれほどの周波数の変化を見込めるか想像できませんがかなり差は小さいのではないでしょうか?数ヘルツどころか、コンマ数ヘルツということはないでしょうか? このようにサンプリング時間とサンプリング周期の設定は計測できる条件に直結していますので、その点の当たりをつけてからfftや周波数カウンターなど使用機器の測定計画を行わないと実験はうまくいかないように思います。