Why is there a difference between MATLAB's FFT of a zero-padded signal compared to the non-padded case
If you write

FFT(data)


you basically sample a continous "spectral curve" at length(data) many points. If you do zero padding

FFT(data,len)


where length(data)&lt;len you effectively sample the curve at more points (len) that are more closely spaced. But it is still is the same curve. It was just sampled at different frequencies.

If this is really the only difference you made, then you're probably witnessing a "sampling issue". By that I mean the curves appear to be different because you've sampled it at different points and there is some oscillations going on. Chances are that you havn't applied any windowing which would smooth out the curve a bit and make this effect (otherwise known as spectral leakage) less likely.

You could try one of the following things:


do even more zero padding for an increased sample rate (samples/Hz) and check out the shape
apply a window function to smooth out the curve before the FFT
use PWELCH


PWELCH does more than simply an FFT. It includes windowing and averaging of overlapping but smaller windows. This is probably what you should be doing given your "non-periodic" hint.