MATLAB: Unwrapped phase of signal

MATLABunwrapped phase

Hi all,
I've a set of amplitude-time data. I need to find the unwrapped phase of it and then plot cosine of unwrapped phase against frequency. This is the part of the code I tried. But the unwrapped phase values seems to be either 0 or pi (which is wrong i think). Can someone help me? (Amplitude data is attached for reference).
[m, n]= size(amp); % amp- amplitude data
t=linspace(0,5000,n); % time
Fs=2000000;
for i=1:m
L = n;
NFFT = 2^nextpow2(L);
UT = fft(amp(i,:),NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2);
ft = UT(1:NFFT/2);
mag(i,:) = 2*abs(ft);
end;
% unwrapped phase of signal
for i=1:m
g(i,:)=unwrap(angle(mag(i,:)));
figure
plot(f,cos(g(i,:)))
end;

Best Answer

Why are you bothering to unwrap the phase if you are just going to take the cosine of it? It will be exactly the same as for the wrapped phase. Do you use the unwrapped phase for anything else?
To answer the question about 0 or pi though, you are trying to take an angle of a magnitude value. You need to take the angle of the complex result - i.e. ft in your case, not mag which is the result of an abs operation. A real result will only ever have a phase angle of 0 or pi because it has no imaginary part to it.
Related Question