Частота из набора данных fft Matlab

У меня есть набор данных в матрице в Matlab. Он содержит 25 000 значений, снимаемых каждые 0,5 нс; Таким образом, общее время набора данных составляет 1,25E-5 секунд.

Набор данных содержит очень высокочастотный шум, который меня не интересует, поэтому я создаю другую матрицу для каждой 50-й точки данных из первой матрицы. Таким образом, размер матрицы составляет 1000 *.

Я рисую абсолютные значения из матлаба fft этой матрицы (я также нормализую амплитуду и рисую только первую половину) и получаю прикрепленные (два графика, второй - крупный план низких частот, которые меня интересуют). Как преобразовать ось x в частоту?

  • Еще один момент: если я возьму каждую точку данных (поэтому я создаю fft из всех 25 000 точек), тогда ось x будет точно такой же; другими словами, размер моей матрицы, похоже, не влияет на ось x, возвращаемую Matlab. Я прикрепил две ссылки к частотному спектру, одна из которых представляет собой крупный план низких частот, которые меня интересуют. Его ось идет от 0-50, поэтому именно эти значения мне нужно преобразовать в Гц.

Заранее спасибо!

Частотный спектр крупным планом

частотный спектр


person William    schedule 02.07.2016    source источник


Ответы (1)


Из того, что я прочитал на http://www.mathworks.com/help/matlab/math/fast-fourier-transform-fft.html#bresqop-1, кажется, что единицы на оси x построенного БПФ - это Гц, если первый вектор f, который вы помещаете в plot(f,power), определяется как последовательность n элементов (n - количество точек данных, помещенных в БПФ), возрастающих от нуля до частоты дискретизации.

Таким образом, для первого графика, который использовал каждую 50-ю точку, снятую на частоте 2 ГГц, частота дискретизации будет 40 МГц. Таким образом, f = (0:n-1)*4*10^7/(25000/50)

Далее показано, как использовать функцию fftshift, чтобы поместить центр вывода функции fft в 0, но ясно, что вы уже сделали это и отрезали отрицательную часть.

Итак, если у вас есть правильное разделение fs/n, частота дискретизации, деленная на количество используемых точек данных, в векторе, который предоставляет ось x для функции plot, тогда единицы оси x будут Гц.

(Надеюсь, у вас еще есть числа для построения графика? Если нет, может помочь этот вопрос: Путаница в выяснении связи между фактическими значениями частоты и индексами графика БПФ в MATLAB)

person Post169    schedule 03.07.2016