Choosing the length of a signal when calculating the FFT
Mai, 

The length of the FFT depends on what application you are doing. A very course summary follows:

Same size FFT:


Analysis: This just means you want to 'analyse' the signal - look and see what type of spectrum it has, maybe patterns in the spectrums, etc. The 'usual' default is to simply use the FFT length equal to the length of your signal. Example: "What is the frequency content of my signal look like?"z = abs(fft(x));
Circular convolution: In circular convolution, you want to convolve two signals circularly, as opposed to 'normal' linear convolution. So if you have a signal $x$ of length $L$, and you want to circularly convolve with signal $y$ of length $L$ also, you can multiply their same length FFTs with each other, and then take the IFFT. Example: "What is the circular convolution of $x$ and $y$?" 
z = ifft(fft(x).*fft(y))


Different Length FFT:


Analysis: You can also use different (bigger) size FFTs for analysis as well. For example, if your signal $x$ was of length $L$, you can still analyze its frequency content choosing an FFT size of length, say, $10*L$. If you do this, you are actually interpolating the frequency spectrum. This just means that the spectrum looks more 'smooth', and in some cases you are able to better see where peaks might exist. Importantly though, this is not the same as increasing your frequency resolution. If someone tells you to "increase frequency resolution by taking a bigger size FFT", tell them they are wrong, and that this just interpolates the frequency domain. (Unless of course that person is your boss in which case you have to solve the non-linear optimization problem of telling them they are wrong without actually telling them they are wrong :-) ). (To actually increase frequency resolution, you need to have more samples of your original time domain signal). Anyway, the example motivation for this might be: "We analyzed our time domain signal using same size FFT, but we want to make sure the peaks we see are in the correct positions, let us increase the size of the FFT by 5 times". 
z = abs(fft(x,5*length(x)));
Linear convolution: In this case, you have to use a different size FFT. In linear convolution, a signal $x$ is convolved with a signal $y$. You might have heard that "Convolution in time is the same as multiplication in the frequency domain". This is true, but with the very important and often under-stated caveat that to do linear convolutions in the frequency domain, you have to make sure the FFT sizes are correct. 

The correct size of the FFT lengths for a linear convolution, is $N_{\text{fft}} = L_x + L_y - 1$, where obviously those lengths correspond to the length of your signals $x$ and $y$. Why is this the case? Because in linear convolution, the result of convolving two signals is always equal to the sum of their lengths, minus 1. Do it on paper and you will see. Convolve a signal of length 3, and another of length 2. The result will be of length 4. 

And so, as an example, one might say: "I want to linearly convolve two signals in the time domain, but I want to do this operation in the frequency-domain." They might do it like this: 
Lx = length(x);
Ly = length(y);
Nfft = Lx + Ly - 1;
z = ifft ( fft(x,Nfft) .* fft(x,Nfft), Pfft);

Hope this helps.