phase unwrap issue (the unwrapping of the phases is not correcly)?

风格不统一 提交于 2019-12-11 01:44:37

问题


I have an issue regard to the unwrapping of phases over time.

I have a radar which monitors a slow periodic moving object. From the received signal, i want to see the phase of the object over time. The phase-over-time signal is extracted from FFTs (at the same FFT bin for all the FFTs). Here is the result i got:

Because the phases are wrapped, so I need to do an unwrapping for the phases. I use the Matlab command "unwrap" to to this. So I got:

The issue is marked at the red circle. Here I expect the signal at this time-instant to be unwrapped. However it wasn't, and the reason is:

- From time sample NO. 42 -> 44, the phases take two time samples to being
wrapped, instead of only one (i.e between two consecutive time samples).
Because of this the phase-over-time signal are not unwrapped correctly. 

I also tried to used another phase-unwrapping method (Adaptive numerical integration), however the result is the same as using "unwrap" command from Matlab.

Here is the phase-over-time signal I expected to see (I did the unwrapping manually):

What is the problem mentioned above (Is it a well-known problem or has any name for it)? And of course what is the solution for this?

I would really appreciate any help from you! Thanks alot.


回答1:


Matlab's unwrap function tries to avoid any jumps between consecutive values larger than tol. By default, tol is pi. Your jumps from -1.644 to -0.7 to 1.55 are not larger than pi, so unwrap doesn't find it necessary to adjust your data. Note, even if the -0.7 wasn't in there, unwrap still wouldn't adjust your data as the jump would still be less than pi.

The tolerance is an optional parameter in unwrap, you can set:

unwrap(x,tol)

I would suggest setting your tolerance to pi/2 or 3*pi/4, depending on your data.

The unwrap documentation probably has more information

http://uk.mathworks.com/help/matlab/ref/unwrap.html?refresh=true




回答2:


It seems that your input signal is between -pi and pi an your desired output between 0 and 2pi, so why dont'you simply add 2pi to the negative values ? Here is a try:

I = s<0;
s(I) = s(I) + 2*pi;

That should provide the desired output, in a more simpler way.

Best,



来源:https://stackoverflow.com/questions/32442396/phase-unwrap-issue-the-unwrapping-of-the-phases-is-not-correcly

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!