Не подскажу про Matlab, но на Python это делается так:
import numpy
import scipy.fftpack
x = numpy.array([0, 1, 0, 1, 0, 1, 0, 1, 0, 1])
numpy.abs(scipy.fftpack.fft(x)[:(len(x)/2)]) * (2./len(x))
На выходе:
array([ 1., 0., 0., 0., 0.]) - тут виден единственный пик на самой высокой частоте
n все более низкие частоты по нулям.
Если взять другой пример:
x = numpy.array([0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1])
, то получим
array([ 0.5, 0. , 0. , 0.5, 0. , 0. ]) - тут два равных пика на
n и на
n/4, последний очевидно следует из данных, первый из того факта, что фигура исходного сигнала далека от синусоиды.