プロが教えるわが家の防犯対策術!

電圧信号を取り込んで、加速度や速度を周波数領域のグラフにしたいのですが、専用のFFTアナライザで測定したグラフと結果が異なってしまいます。
計算式を直そうにもどこを直したら良いかわからないので、教えてもらえないでしょうか?
行っている計算は以下のとおりです。
Y軸はリニアスペクトルとします。

1.取り込んだ電圧信号を加速度の物理量に変換する。
  1G=0.375Vとしています。例)0.2V=0.075G

2.1で求めた値をFFT演算する。

3.FFT演算で得られる実数部と虚数部からスペクトルを求める。
  リニアスペクトル = {√(実数部の2乗)+(虚数部の2乗)} / 2

4.3で求めたスペクトルを実行値(RMS)に変換(1/√2)する。

A 回答 (4件)

>ローパスフィルターをかけてからAD変換を行う必要があります。


処理内容はどのようなものになるでしょうか?

電圧信号をアナログフィルター回路に通してからA/D変換します。
つまり専用の回路(ハードウエア)が必要です。
アナログフィルターの特性によって影響が出ることがありますし、FFTアナライザー各社でフィルターの仕様が異なるので、同じ信号を専用機を用いて解析しても、メーカー・型番が異なれば、結果が異なることがあります。

>同じディジタル値を用いても解析結果が異なる場合は、プログラム上の問題です。
これは、FFTアナライザとAD変換器で同じ電圧信号を取り込んでいるにもかかわらず、ということでしょうか?

違います。同じ信号を取り込んでも取り込みのタイミングやハードの違いにより同じディジタル値にはならないからです。同じディジタル値で比較してみないとプログラムの結果が正しいかどうかは検討できませんので。

専用機はメーカーごとに異なる形式のバイナリデータでデータを保存するのがふつうです。パソコンなどのA/D変換器でサンプリングしたデータを専用機に入力して解析するのは困難です(バイナリの形式を知らなければできませんし、その変換ツールを作る必要があります)。

逆に専用機でサンプリングした波形データをアスキーデータに変換してパソコンに吸い上げて、自作したプログラムに入力する方が簡単です。

そうして同じデータを用いてプログラムを検証すると言うことです。
なお、最近の専用機なら波形データをパソコンで利用できるようにアスキーデータに変換する機能はあります。

客先のアナライザーとなるとアナライザーでディジタルサンプリングした後の波形データを提供してもらって検証する必要があります。

それができないなら、質問者がサンプリングしたデータを信頼できるFFT解析ソフトに入力して、結果を比較して自作プログラムを検証するしかないと思います。


>窓関数での畳み込みは、FFTアナライザと同じ関数でやっています。

窓関数の他、軸補正などの機能もFFTアナライザーにはあります。また、平均化などの設定情報も必要ですね。

窓関数についてはハニングあたりならよいですが、レキュタンギュラあたりだとリンク効果の影響が大きいので、同じ性能のA/D変換器を用いても。計測のタイミング次第で結果は変わります。
    • good
    • 0
この回答へのお礼

いろいろアドバイスくださってありがとうございます。

私に求められていることは、自作プログラムが正しい結果を出すことというより、自作プログラムでFFTアナライザと同じ結果を得られるようにすることと言った方が正しいですね。

回答を見る限りでは、同じデジタル値であれば同じ結果が得られると思えるのですが、同じデジタル値を得るためにハードを買う必要があるのでしたら論外ですね。

ハードが違っても入ってくる電圧信号の物理量は同じなのだから、計算だけで何とかなると思っていました。

AD変換器のメーカーに相談するしかないようです。

お礼日時:2007/05/02 18:07

専用のFFTアナライザーを使用する場合と、簡単なA/D変換器を用いてA/D変換をして解析する場合結果が異なることはよくあります。



これにはハード上の問題とソフト上の問題があります。

状況がよくわからないのですが、プログラムの検証を専用機と比較していると言うことは、他のFFTソフトを持っていないと思われます。
専用機は時刻歴データも保存できるはずですので、そのデータを自作プログラムで解析してみてください。
つまり同じディジタル値を用いて解析するのです。

その結果が同じならば、問題はハードウエア上にあります。

ハードの上の問題は2つ考えられます。

1つはエリアジングの問題で、1つはサンプリングの問題です。

専用のFFTアナライザーには、アンチエリアジングフィルターというアナログフィルターがついていますので、エリアジングが防止されています。
しかし、パソコンなどで使用している簡単なA/D変換器にはアンチエリアジングフィルターはないので、エリアジングが発生することがあります。

FFTではサンプリング周波数により解析可能な周波数の上限が決まっています。エリアジングというのはこの解析周波数より高い周波数が信号に含まれているときに、高い周波数を低い周波数として間違えて計算してしまうことです。
これを防止するにはアナログ上でアンチエリアジングフィルターと呼ばれるローパスフィルターをかけてからAD変換を行う必要があります(質問文の1の前に処理する必要あり)。これをしないと、あらかじめ高周波成分がないことがわかっている信号でなければ、結果の信頼性はありません。

また先の回答にあるようにサンプリング周波数が異なる場合も同じ結果にならない可能性はあります。
専用機は1024KHzとか2の累乗のサンプリング周波数を持っていますが、パソコンなどのA/D変換器の場合1000KHzとか10進法できりのいい周波数になっていることが多いですし。

以上がアナログからディジタルに変換する際のハード上の問題点です。
同じディジタル値を用いても解析結果が異なる場合は、プログラム上の問題です。

FFTアナライザーには窓関数を始めいろいろな機能設定がありますので、それらを同じ状態にしてやらなければ、当然結果が変わってしまいます。
いろいろな設定があるので、それらの条件がわからなければどこが問題なのか適切な回答できませんが、質問文には窓関数など設定状況がかかれていないので、まず第1に窓関数の影響である可能が高いと推定します。

窓関数なら1と2間に処理する必要があります。
まさに#1さんへの補足に書かれている段階で必要な作業です。

この回答への補足

>ローパスフィルターをかけてからAD変換を行う必要があります。
処理内容はどのようなものになるでしょうか?

>同じディジタル値を用いても解析結果が異なる場合は、プログラム上の問題です。
これは、FFTアナライザとAD変換器で同じ電圧信号を取り込んでいるにもかかわらず、ということでしょうか?
電圧信号は同じですが、FFTする前の値が同じかどうかはわかっていません。
AD変換器はうちの会社で選定したので調べることはできますが、FFTアナライザについては、選定・購入したお客さんですら設定をよくわかっていない状況で、調べれるかどうか…。

窓関数での畳み込みは、FFTアナライザと同じ関数でやっています。

補足日時:2007/05/02 13:02
    • good
    • 0

> (1)~(3)で言えば、(3)になりますが、各周波数ごとに値を比べても


> 差が一定ではないんです。等倍でもないし、等差でもないし。

最近の計測器は使ったことがないけど,FFT アナライザの入力は
アナログですか,デジタルですか?

デジタルだとしたら,同じデジタルデータを FFT アナライザと
自前 FFT で使ってるわけですよね?

アナログだとしたら,自前側のサンプリング周波数は何 Hz で,
何 Hz までのスペクトルが欲しくて,FFT 件数はいくつでしょう?
また,そもそも D/A 変換した後のデータがちゃんと取れているか,
確認しましたか?
    • good
    • 0

FFT には詳しくありませんが,回答がつかないようなので….



> 専用のFFTアナライザで測定したグラフと結果が異なってしまいます。

どう異なっているんでしょうか?

(1) Y軸の値が定数倍異なっているだけ.
(2) グラフの形の違いが,右 (高周波) 側に行くほど大きい.
(3) それ以外 (具体的には?)


(1) だとしたら,何倍違いますか?

> リニアスペクトル = {√(実数部の2乗)+(虚数部の2乗)} / 2

FFT の細かい係数とかよく覚えてないけど,↑の最後の "/ 2" は要るのかなあ?


(2) だとしたら,FFT アナライザの周波数軸は対数目盛?
自分で FFT した直後は,周波数軸はリニア (周波数は等差数列) のはずだけど,
アナライザの周波数軸が対数目盛 (周波数は等比数列) ならば,
パワースペクトル密度もそれにあわせて変換しないといけないんじゃないかなぁ?

この回答への補足

(1)~(3)で言えば、(3)になりますが、各周波数ごとに値を比べても差が一定ではないんです。
等倍でもないし、等差でもないし。

> FFT の細かい係数とかよく覚えてないけど,↑の最後の "/ 2" は要るのかなあ?
これは、2で割るんじゃなく、2×FFT件数で割るの間違いでした。

FFT演算の結果の実数部と虚数部から違っているので、演算手順1と2の間に何か計算が必要としか思えないんですが、何が必要かがわかりません。

補足日時:2007/05/01 22:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!