11-27-2014 05:49 AM
いつもお世話になっております。
現在正弦波の位相差情報を獲得しようと考えており測定データをFFT.viで複素数に変換したのち“複素数を極座標に変換“関数
を用いて位相差を獲得するviを組んでみましたが、実測値とのフィッテイングで求めた位相差と大きく値がずれてしまうことがあります。
原因としてはサンプリング間隔を6msで行っていますが、全データが等間隔でサンプリングできていなく
数点は7msや5msでサンプリングしているからだと考えていますが実際にそれが原因なのでしょうか?
ご助言いただけると幸いです。
解決済! 解決策の投稿を見る。
11-27-2014 06:47 AM
cx11さん、こんにちは。
文面から読み取れる情報だけでお答えするなら、それが原因です。
サンプリング時刻=6ms±1msならば、1msのゆらぎは、サンプリングクロックのジッター(Jitter)ですから、これは位相雑音に他なりませんので、位相差の誤差を生じます。しかも、6msに対する1msのジッタ-は比率としてとても大きいですから、FFT後の位相に与える影響は大きいでしょう。
ハード的にジッターを低減するのが第一ですが、それができない場合は、サンプル点をソフト的に補正してからFFTすることが可能です。ひとつには、スプライン等の補間処理をする方法があります。また別の方法として、マルチレート処理の一種として一度オーバーサンプルしなおす方法が考えられます。被測定対象の正弦波がきれいな波形であればよいのですが、正弦波そのものに雑音が重畳している場合には、いずれの手法もあまり精度はよくない結果となるでしょう。
以上です。
11-27-2014 07:18 AM
すみません、訂正します。
元のサンプリング時刻がずれているので、マルチレート変換のオーバーサンプリングは使えないですね。 失礼いたしました。
ところで、方法としてFFTは必須ですか?
わたしなら、時間軸で最小二乗法による正弦波カーブフィットを適用してから、位相情報の変化をみます。
サンプリングクロックのゆらぎも吸収できると思いますが、いかがでしょうか?
以上です。
11-28-2014 01:18 AM
S.A.M様
いつもお世話になっております。
ご返信、ご助言ありがとうございます。
高調波の位相差情報も獲得したいために
FFTを行っています。
一度サンプリング間隔を6msではなく12ms等測定間隔を広げることで
測定間隔の誤差の割合を小さくして
フィッテイングでもとめた位相差とのずれが小さくなるかどうか確認したいと
思います。
11-28-2014 08:51 AM
cx11さん、こんにちは。
サンプルを作ってみました。 (意図されているものと違ったらごめんなさい、、、)
サンプリング周期誤差=0とすると、右上グラフの位相は動きませんので、基本波、高調波の位相関係は一定です。
サンプリング周期誤差=1,2・・・と変えれば、右上グラフの位相が動くことが確認できるかと思います。
また、高調波成分が増加するため、左上のXYグラフ中心に成分が増えます。
なお、サンプリング周期を、6msから12msに変更する場合、
1 UI (Unit Interval)単位でみたときのジッタ-は減り、例えば通信用途ではビットエラーが減ります。
一方、実態として被測定信号から取得する振幅誤差そのものが減るわけではないので、
cx11さんのアプリケーションで有効な手法ではないかもしれません。
ご存知なのかもしれませんが、基本的には、以前申し上げたように、ハードウェアのサンプリングにおけるジッタ-を改善することが重要で、
1.アクイジション回路の見直し、
2.制御ソフトウェアのタイミング改善
をご検討されてはいかがでしょうか?
11-30-2014 11:33 PM
S.A.M様
ご返信、サンプルプログラムありがとうございます。
一度ご指摘して頂いたハードウェアのサンプリングの改善を行いたいと思います。
また不明な点が出てくると思いますので
今後ともよろしくお願い致します。
cx11