MATLAB: Unexpectred results using Mod and Unwrap

MATLABmodunwrap

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?

Best Answer

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.)