Pitch detection using Cepstrum in matlab
I wrote a very very basic cepstrum pitch track in the past, well we can try using a pure senoidal signal to show how its works... let me see 

For Cepstrum I always have used this steps:


Apply hamming windows in the signal
Apply FFT
Get magnitude
Convert to log scale
Apply IFFT


The equation for cepstrum:

IFFT(log(abs(FFT(s))))


But you can use FFT or IFFT, take a look:

IFFT(log(abs(FFT(s)))) == real(FFT(log(abs(FFT(s)))))


The difference is the scale representation, if do you end using FFT you need extract just the real information, for both above equations you will get the same shape:

For IFFT(log(abs(FFT(s)))):



For real(FFT(log(abs(FFT(s))))):



This is a cepstrum shape example from 4096 points sine in 440hz sampled at 44100hz

Now try get the maximum from the half cepstrum data to find the periodicity...

see my extremely basic code of how to get a sine frequency, just to exemplify to you:

Fs=44100;


%creating one simple signal

f=440; %we need find this 
frame = sin(2*pi*f/Fs*(1:2048*2))';



win = hamming(length(frame));


%samples multplied by hamming window
windowedSignal = frame.*win;


fftResult=log(abs(fft(windowedSignal)));


ceps=real(ifft(fftResult));



nceps=length(ceps)

%find the peaks in ceps

peaks = zeros(nceps,1);

k=3;

while(k &lt;= nceps/2 - 1)
   y1 = ceps(k - 1);
   y2 = ceps(k);
   y3 = ceps(k + 1);
   if (y2 &gt; y1 &amp;&amp; y2 &gt;= y3)
      peaks(k)=ceps(k);
   end
k=k+1;
end



%get the maximum ...
[maxivalue, maxi]=max(peaks);



result = Fs/(maxi+1) 


my result was close 441hz for better results maybe do you need apply parabolic interpolation ....