БПФ в Excel - Как получить наиболее реалистичный спектр - PullRequest
1 голос
/ 09 января 2012

Я пытаюсь получить спектр БПФ этих данных: gggttt.host.sk/sample.xls с помощью Excel. @Paul R очень помог мне в другом вопросе выяснить значение мусорных ведер, но есть еще вопросы, которые я хотел бы понять.

Во-первых, Excel, даже когда модули представлены в логарифмическом масштабе, не показывает их в дБ. Что вы делаете, чтобы преобразовать эти величины в дБ?

Кроме того, существует проблема с оконной функцией, псевдонимами и т. Д. Поскольку я обрезаю данные ровно за один период, кажется, что применение оконной функции не является необходимым. Кроме того, поскольку мне нужны только основная, вторая и третья гармоники и никакие другие пики в более высоких бинах, забота об алиасинге также не кажется необходимой. Однако большое беспокойство вызывает не n ^ 2 количество точек - 1253. Я попытался заполнить их нулями до 2048 или выполнить БПФ только для первых 1024, игнорируя 229 оставшихся точек и, наконец, удаляя каждые 6-е укажите точку, а затем удалите каждую 52-ю точку и удвойте последнюю точку, чтобы получить необходимые 1024. В конечном счете, заполнение нулями оказалось наихудшим подходом - пары высоких и низких баров повторяются по всему спектру. Усечение данных (обработка только первых 1024 точек) работает лучше всего. Мне бы очень хотелось узнать, что кто-то, имеющий опыт в обработке сигналов, порекомендовал бы как лучший подход для получения наиболее реалистичного спектра.

Вот примеры двух разных способов применения БПФ к этим данным:

gggttt.host.sk / fig_truncated.jpg

gggttt.host.sk / fig_padded.jpg

gggttt.host.sk / fig_every_6th_and_52nd_point_deleted.jpg

Ответы [ 2 ]

0 голосов
/ 10 января 2012

Вот график PSD, сгенерированный Octave (клон MATLAB) с использованием всех 1253 ваших точек данных:

> t = load('sample.txt');
> m = mean(t)
m = -13.679
> periodogram(t,[],'onesided',1253,1e9)

periodogram(t,[],'onesided',1253,1e9)

Как видите, имеется большой компонент постоянного тока, а компоненты без постоянного тока просто выглядят как типичный минимальный уровень шума без очевидных пиков. Я предполагаю, что вам нужно будет собрать больше данных, если вы подозреваете, что в шуме действительно есть пики - вы можете извлечь их, используя усреднение по времени или по ансамблю.


Вот только первые десять пунктов PSD:

> Pxx = periodogram(t,[],'onesided',1253,1e9);
> plot(10*log10(Pxx(1:10)))

plot (10*log10(Pxx(1:10)))

0 голосов
/ 09 января 2012

Если у вас есть ровно один период данных, вы должны использовать БПФ (или БПФ, если не доступно БПФ) именно этой длины. Теоретически, БПФ не ограничены степенями длины 2.

...