Не подскажу про 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
, последний очевидно следует из данных, первый из того факта, что фигура исходного сигнала далека от синусоиды.