電圧信号を取り込んで、加速度や速度を周波数領域のグラフにしたいのですが、専用のFFTアナライザで測定したグラフと結果が異なってしまいます。
計算式を直そうにもどこを直したら良いかわからないので、教えてもらえないでしょうか?
行っている計算は以下のとおりです。
Y軸はリニアスペクトルとします。
1.取り込んだ電圧信号を加速度の物理量に変換する。
1G=0.375Vとしています。例)0.2V=0.075G
2.1で求めた値をFFT演算する。
3.FFT演算で得られる実数部と虚数部からスペクトルを求める。
リニアスペクトル = {√(実数部の2乗)+(虚数部の2乗)} / 2
4.3で求めたスペクトルを実行値(RMS)に変換(1/√2)する。
No.4ベストアンサー
- 回答日時:
>ローパスフィルターをかけてからAD変換を行う必要があります。
処理内容はどのようなものになるでしょうか?
電圧信号をアナログフィルター回路に通してからA/D変換します。
つまり専用の回路(ハードウエア)が必要です。
アナログフィルターの特性によって影響が出ることがありますし、FFTアナライザー各社でフィルターの仕様が異なるので、同じ信号を専用機を用いて解析しても、メーカー・型番が異なれば、結果が異なることがあります。
>同じディジタル値を用いても解析結果が異なる場合は、プログラム上の問題です。
これは、FFTアナライザとAD変換器で同じ電圧信号を取り込んでいるにもかかわらず、ということでしょうか?
違います。同じ信号を取り込んでも取り込みのタイミングやハードの違いにより同じディジタル値にはならないからです。同じディジタル値で比較してみないとプログラムの結果が正しいかどうかは検討できませんので。
専用機はメーカーごとに異なる形式のバイナリデータでデータを保存するのがふつうです。パソコンなどのA/D変換器でサンプリングしたデータを専用機に入力して解析するのは困難です(バイナリの形式を知らなければできませんし、その変換ツールを作る必要があります)。
逆に専用機でサンプリングした波形データをアスキーデータに変換してパソコンに吸い上げて、自作したプログラムに入力する方が簡単です。
そうして同じデータを用いてプログラムを検証すると言うことです。
なお、最近の専用機なら波形データをパソコンで利用できるようにアスキーデータに変換する機能はあります。
客先のアナライザーとなるとアナライザーでディジタルサンプリングした後の波形データを提供してもらって検証する必要があります。
それができないなら、質問者がサンプリングしたデータを信頼できるFFT解析ソフトに入力して、結果を比較して自作プログラムを検証するしかないと思います。
>窓関数での畳み込みは、FFTアナライザと同じ関数でやっています。
窓関数の他、軸補正などの機能もFFTアナライザーにはあります。また、平均化などの設定情報も必要ですね。
窓関数についてはハニングあたりならよいですが、レキュタンギュラあたりだとリンク効果の影響が大きいので、同じ性能のA/D変換器を用いても。計測のタイミング次第で結果は変わります。
いろいろアドバイスくださってありがとうございます。
私に求められていることは、自作プログラムが正しい結果を出すことというより、自作プログラムでFFTアナライザと同じ結果を得られるようにすることと言った方が正しいですね。
回答を見る限りでは、同じデジタル値であれば同じ結果が得られると思えるのですが、同じデジタル値を得るためにハードを買う必要があるのでしたら論外ですね。
ハードが違っても入ってくる電圧信号の物理量は同じなのだから、計算だけで何とかなると思っていました。
AD変換器のメーカーに相談するしかないようです。
No.3
- 回答日時:
専用の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アナライザと同じ関数でやっています。
No.2
- 回答日時:
> (1)~(3)で言えば、(3)になりますが、各周波数ごとに値を比べても
> 差が一定ではないんです。等倍でもないし、等差でもないし。
最近の計測器は使ったことがないけど,FFT アナライザの入力は
アナログですか,デジタルですか?
デジタルだとしたら,同じデジタルデータを FFT アナライザと
自前 FFT で使ってるわけですよね?
アナログだとしたら,自前側のサンプリング周波数は何 Hz で,
何 Hz までのスペクトルが欲しくて,FFT 件数はいくつでしょう?
また,そもそも D/A 変換した後のデータがちゃんと取れているか,
確認しましたか?
No.1
- 回答日時:
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の間に何か計算が必要としか思えないんですが、何が必要かがわかりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どなたか、S45Cの電気伝導率(S...
-
gnuplot でこのような濃淡グラ...
-
近似直線について
-
分解能の値が大きいと小さいも...
-
プランク定数の実験をしたので...
-
データの回帰分析と相関係数(R,...
-
原点修正の方法
-
Igorの使い方について
-
10,000百万円っていくらですか?
-
時間を100進法であらわしたい。
-
「強度」は高い?強い?
-
穴が開く? 空く? 明く?
-
穴あけのあけってどんな漢字で...
-
テーパーピンの抜き方について
-
数Ⅲ 微分 aを0<a<π/2を満た...
-
yの二乗をXで微分したら2y・y' ...
-
角度の計算でdegとradがあると...
-
合成関数の微分を使う時と、使...
-
y=logX+1 の微分教えください ...
-
「強度が弱い」という文はおか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MTFを求める際に、平滑化や隣接...
-
1/3オクターブバンドについて質...
-
どなたか、S45Cの電気伝導率(S...
-
FFTのDC成分って、なんで大きく...
-
分解能の値が大きいと小さいも...
-
隣接平均と移動平均
-
Igorの使い方について
-
半値幅の測り方
-
MOSFETのgm-Vgs特性
-
データの回帰分析と相関係数(R,...
-
有効数字…?
-
原点修正の方法
-
近似直線について
-
混合(二重)ガウス近似について
-
指数関数のカーブフィッティング
-
savitzky-golayのフィルタについて
-
有限要素法解析のエラーについて
-
スタインメッツの実験式
-
光学定数について
-
Ngraphで円を描く方法を教えて...
おすすめ情報