Unexpectred results using Mod and Unwrap

I was playing with the Unwrap function when I noticed some unexpected results when working with a phase angle in degrees instead of radians.
The unwarp function unwarps a signal by adding or subtracting a multiple of 2*x. So, in theory unwarp(signal,x) and mod(signal, 2*x) should cancel eachother. This is true for x=pi, but does not seem to hold for any other number. See the example below:
x = pi; % x=pi : ok, x=4 : trouble
% Make some random numbers
signal = 2*x*rand(1,1000);
% Mod(signal,2*x) should be equal to Mod(unwrap(signal,x),2*x)
plot(mod(signal,2*x), mod(unwrap(signal,x),2*x));
Can anybody tell me what I'm missing?

 Réponse acceptée

Walter Roberson
Walter Roberson le 23 Oct 2012

0 votes

This caught me off guard a few years ago. The answer is that although you can adjust the jump tolerance, you cannot adjust the amount of the jump.
See http://www.mathworks.com/help/matlab/ref/unwrap.html and think about the implications of the note highlighted there about the effect of specifying a tolerance less than Pi (i.e., that the lower tolerance doesn't change the jump value in that note.)

Plus de réponses (1)

Ruben de Bruin
Ruben de Bruin le 23 Oct 2012

0 votes

thanks Walter! You just saved my evening :-)

Catégories

En savoir plus sur General Applications dans Centre d'aide et File Exchange

Produits

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by