05-05-2016 10:25 PM
いつもお世話になっております。
位相差の周波数特性を測定したところ画像の様な結果が得られました。
そこで位相のアンラップをしたいのですがunwrap phase.viでは上手くいかなかったので他の方法やプログラムを探しています。
何か良い方法は無いでしょうか?
よろしくお願いします。
解決済! 解決策の投稿を見る。
05-07-2016 06:48 AM
位相差の周波数特性を修正したい にてShiraishiさんから非常にすばらしいコメントがありますが、具体的にうまくいかなかったというのはどういった状況でしょうか?
またこのあたりはLabVIEWの使い方の前に、信号処理の概念になるかと思いますが、そのあたりはある程度探し尽くされましたか?
05-09-2016 10:40 PM
Active Participant様ご返信ありがとうございます。
確かに位相差の周波数特性を修正したいの件では非常に的確なコメントが頂けました。
具体的にうまくいかなかった事につきましては、
以下の画像がうまくいかなかった時のグラフとなります。この時のブロックダイアグラムの画像は添付致しました。
このあたりの事はある程度探したつもりでしたが、あまり探せていなかったのかもしれません。申し訳ないです。
また何か見落としている事やアドバイスを頂けたら幸いです。
よろしくおねがいします
05-11-2016 07:51 AM
前のスレッドでも書きましたとおり、石塚様がアンラップしたい位相データは、大変ノイジーで
思ったようにアンラップするのは極めて困難だと思います。
これは、LabVIEWのunwrap phase.viの能力が低いのではなく(他のプログラムで回避できるようなものではなく)、
元の位相データがノイジーすぎるということに尽きると思っています。
人間が見れば簡単に折り返せそうに見えますが、これをそのように的確に折り返すアルゴリズムは、そう無いと思います。
今回のアンラップですが、いくつか考えるべきことがあるかと思います。
■もっとノイズを減らせないのか?
測定の事情でしょうか。F特にしても、周波数軸での位相のノイズが非常に大きいと思います。
もっと、位相のノイズを減らせる計測方法にはならないでしょうか?
位相接続、位相のアンラップは、基本的には隣り合うデータ点同士の位相差が180°以上あると、
「隣の周に入った」、と勘違いしてしまいます。
本当に隣の周に入った場合と識別するために、ノイズはざっくり90°以下(或いは180°÷√2 以下)でなければなりません。
例えば、0~360°で表現した位相が、100°→200°→300°→40°、と変化した場合、
100°→200°では差が180°以下なので位相は増えたのであり、200°→300°でも同様。
300°→40°では、数値上は減っていますが減り量が260°もあって180°以上変化しているので、
これは260°減ったのではなく100°増えた(-260°+360°=100°)と増えた、と判定することで、
300°→40°は300°→400°である、とみなして位相接続します。
一方、280°→40°→160°→280°、と変化した場合に、実際のところは280°から240°位相が減って40°になり、
120°位相が増えて160°になり、さらに120°位相が増えて280°になった(もとに戻ってきた)といった場合は、
1つめのところで240°位相が減ったところを、変化が180°以上なので「120°位相が増えたのだ」と誤認して
280°→400°だ、と判定してしまいます。その後は変化が120°ずつですからそのまま位相が増えたと認識し、
結果、280°→400°→520°→640°、だと判断されます。本当は位相は一周していなかったのに、
変化が大きすぎるところがあったせいで「まるで一周してしまったかのように」誤認するわけです。
そうならないようにするには、隣り合うデータ点間で、位相の飛び方が多くとも180°より小さくないといけません。
unwrap phase.viも、基本的にはこういった方式に則ってやっているはずですが(もうちょっと賢い?)
それでもうまくいかないので他の方法、他のプログラム・・・というほど、お手軽な方法はないでしょう。
Pignite様が書かれたように、これ以上は結構高度な信号処理の概念が必要と思います。
■必ず直線的に位相が増えるのか?
今回のデータの特徴は、位相のノイズが大きいながらも、平均的には「周波数とともに単調に位相が増加する」
という現象なのでしょうか。
一般的な位相接続、位相アンラップは、オールマイティーに処理するので、位相の飛び方に制約が要りますが、
「平均的には単調に位相が増えるのだ」という前提であれば、その性質を利用して、もうちょっとマシな
計算ができる可能性はあります。
しかし、その場合でも、「平均的には単調増加」にできたとしても、そのまわりにばらついている
ノイジーなデータ点については、「誤った周回」に散らばってしまう可能性が高く、それは避けられないと思いますが、
それでも構わないのでしょうか?
(見た目には大局的に違わないが、データとしてそれで良いか)
■位相接続したデータの使い道
今回、位相接続・位相アンラップが必要なのは、どういった用途でしょうか。
位相アンラップが必要なケースは大きく2つあって、
1つは、単に見栄えの問題で、表示が不連続にジャンプするのが見苦しいのでつなげて表示したいケースと、
もう1つは、物体の形状や距離変化を光で計測する干渉計のような場合で、位相を正確に接続しないと物体の形状や距離が
波長の整数倍÷2で不定になって正しい計測結果にならないので、正確な位相アンラップを要するケースです。
前者の場合は、今回のようなデータではアンラップはどのような方法をとっても苦しいので、不連続でも諦めるか、
または、フェーザー表示のように複素数空間でクルクル連続的に回っていく軌跡の線として描くなど、表現方法をかえる
ということもアリかと思います。
後者の干渉計の場合は、正確で一意な位相アンラップができないと物体の形状や距離変化を正しく計測できないので、
位相トビを厳しく制限するよう、精度よく計測する系を組まなければなりません。その上で、位相のトビが
180°以上(実際はもっとマージンを設ける)のときは「計測エラー」となるようにすることが多いです。
(また、位相のアンラップをしても、それをその後cosやsinに入れる計算に用いるのだとすると
そもそもアンラップしなくても良いですし)
以上のことから、
・ノイズを減らした計測にならないか
・アンラップの用途は何か
を考える必要がありそうです。
長くなりすみません。
05-16-2016 05:41 AM
M.Shiraishi様ご返信ありがとうございます。
やはりノイズが多すぎる事が原因ですよね。
無茶な事を聞いてしまい、申し訳ありません
アンラップについて考えるべき点について
以下考えてみました。
■もっとノイズを減らせないのか?
測定の事情もありますが、ノイズも含めてのデータであるため、ノイズを減らす事はどうしても出来ません。
■必ず直線的に位相が増えるのか?
はい、必ず位相は直線的に+方向か-方向に増加していきます。
どんな手段でも試てみたいと思っているのでよろしければ、単調増加の性質を利用した方法を教えて頂けないでしょうか?
(この方法で駄目なら一度連続させる事は諦めようと思います。)
よろしくお願いします
■位相接続したデータの使い道
用途は物体の距離変化のようなものです。
unwrap phase.viのアルゴリズムや位相接続のずれの原因などとても丁寧に教えて下さりありがとうございました。
05-16-2016 07:54 AM
用途が物体の距離変化を知るためのものとすると、全データが厳密に位相接続されないとダメなケース
なのではないかと思います。
そうすると、仮に「直線的に増加」の性質が使えたとしても(確実な方法がある、というわけではない)、
「見た目には大局的に接続できた」ようであっても、使いようのないものにしかならないと思います。
ノイズの低減はできない、とのことですが、前のコメントで書きました通り、
隣り合わせのデータ点同士で180°以上回ってしまっているものを、
例えば、200°プラスに回ったのか、160°マイナスに回ったのかを識別する方法が、
データから得られない以上、復元できないのです。
横軸が周波数なので、周波数分解能を上げる、などして、飛び過ぎているデータ点の間も
データが得られるようにする、というのは、やはり難しいのですかね。
(ノイズを減らす、というのは、そういうのも含みます)
飛び過ぎの原因が、周波数分解能が粗いという原因もありうるため、
間を埋められる計測ができるのであれば、ノイズ量はそのままで、確実に接続できる可能性はあります。
05-18-2016 03:32 AM
M.Shiraishi様ご返信ありがとうございます。
間を埋める計測についてですが、計測・処理時間の都合上厳しいです。
色々教えていただいた後で大変申し訳ありませんが、位相接続でのデータ処理は一度諦めようと思います。
しかしunwrap phase.viの存在が分かった事で可能性は広がったと思います。
本当にありがとうございました
また何かあった時に助けていただけたら幸いです