БПФ синусоиды не приходит, как ожидалось, то есть в одной точке


14

Голубой график представляет собой спектр 50 Гц, а пурпурный - синусоидальный сигнал 50,1 Гц (имеющий амплитуду 0,7). Оба образца отбираются со скоростью 1024 образца / с. Я выполнил БПФ с 1024 точками, чтобы получить этот спектр.

Почему только спектр 50 Гц является единственным значением? Почему синус 50,1 Гц состоит из других частот, кроме 50,1 Гц; откуда взялись эти новые частоты?

Я не делал никакой нелинейной обработки сигнала 50,1 Гц! Кроме того, 50,1 Гц, кажется, имеют меньшую максимальную амплитуду, то есть не 0,7, тогда как фактически синусоидальная волна, которую я генерировал, имеет амплитуду 0,7.

Почему это?

Два спектра, для 50 Гц и 50,1 Гц соответственно Получено командой MATALB fft ();


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

4
Ответы ниже верны. Термин для того, что вы наблюдаете, называется спектральной утечкой и наблюдается, когда вы анализируете синусоиду, частота которой не лежит точно в центре одной из ваших выходных корзин DFT.
Джейсон Р

пожалуйста, я могу знать, что вы наметили, против чего вы сможете получить свой пик на отметке 50 Гц
Nazario_Jnr

Посмотрите этот ответ для подробного описания того, что проблема и как ее исправить.
Дилип Сарватэ

Ответы:


14

В действительности ответ Мэтта уже дает один взгляд на проблему: ДПФ неявно периодичен как во временной, так и в частотной области (см. Этот вопрос ). По вашим параметрам мы можем рассчитать, что ваш период наблюдения составляет 1 с. Это означает, что вы наблюдаете 50 периодов тона 50 Гц. Периодическое увеличение этого интервала наблюдения всегда будет приводить к синусоиде. Если вы берете тон 50,1 Гц, вы преобразуете 50,1 периодов колебаний. Периодическое расширение этого сигнала приведет к скачкам фазы, которые вызывают дополнительные спектральные притоки.

еs/NDFTзнак равно1024Гц/1024знак равно1Гц

Оба описанных выше эффекта способствуют спектру, который вы наблюдаете.


1
Это имеет смысл. Но чтобы быть более понятным, спектральная утечка, которую вы описали, является проблемой с инструментом (БПФ) для наблюдения спектров. Это не дефект perse в сигнале. Означает, что если я «слышу» звуковой сигнал частотой 50,1 Гц, он будет звучать в моих ушах как один тон, а не как какой-то «шум». Я прав?
gpuguy

1
Ты абсолютно прав. Он показывает, насколько важно понимать, что на самом деле делает DFT, чтобы правильно его интерпретировать. Как примечание: то, что вы «услышите» в реальной реализации, также зависит от того, как вы преобразуете дискретный сигнал в аналоговый.
Deve

11

Это эффект усечения или оконного синусоидального сигнала. Вы должны усечь таким образом, чтобы, если вы добавили сдвинутый сигнал к усеченному, он все равно будет исходной синусоидой.


6

Вы получите только одну результирующую точку FFT для частоты чистой немодулированной синусоиды, которая является точно целочисленной периодичностью в апертуре или ширине FFT. Любая другая частота синусоиды будет выглядеть как свернутая с преобразованием (периодическая Sinc) окна по умолчанию (прямоугольник).

50,1 Гц не является точно периодическим в 1-секундном окне вашего БПФ.

Эти другие бины или частоты результирующего БПФ "утечки" необходимы для представления разрыва, создаваемого между границами окна любым сигналом, который не является точно целочисленным периодическим в ширине БПФ. Это связано с тем, что все базисные векторы ДПФ являются точно целочисленными в пределах ширины ДПФ и, таким образом, не имеют резкого разрыва между концом и началом базисного вектора. Таким образом, любой сигнал, который не имеет этих характеристик, не может быть представлен только одним базисным вектором ДПФ (и его комплексным сопряжением), поэтому информация об остальной части сигнала должна куда-то идти.

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


5

Бьюсь об заклад, ваша синусоида равна нулю на первом и последнем образце? Так не должно быть. Он должен быть выстроен так, чтобы следующий сэмпл после последнего сэмпла был равен нулю, чтобы можно было копировать и вставлять копии сигнала один за другим, и они будут выглядеть непрерывными, без дублированных сэмплов. Возможно, подумайте об этом, как обоях с мозаичными обоями для рабочего стола, где один край должен плавно переходить к противоположному краю, когда выложен плиткой. :)

См. Https://gist.github.com/endolith/236567 для примера Python:

# Sampling rate
fs = 128 # Hz

# Time is from 0 to 1 seconds, but leave off the endpoint, so that 1.0 seconds is the first sample of the *next* chunk
length = 1 # second
N = fs * length
t = linspace(0, length, num = N, endpoint = False)

# Generate a sinusoid at frequency f
f = 10 # Hz
a = cos(2 * pi * f * t)

# Use FFT to get the amplitude of the spectrum
ampl = 1/N * abs(fft(a))

Посмотрите, как две копии сигнала соединяются друг с другом, создавая непрерывную волну:

введите описание изображения здесь

Когда это происходит, энергия БПФ полностью содержится в одном элементе:

введите описание изображения здесь


1
У меня была та же проблема, что и у ОП. Это было решено благодаря установке конечной точки = ложный флаг. Я думал, что пространство строк (закрыто, открыто) по умолчанию, но оказывается (закрыто, закрыто). Я нашел ошибку благодаря вашему коду.
Трисмегистос

-1

Это происходит из-за Спектральной Утечки и Оконной обработки. Идеальный отклик, то есть импульсная функция, предназначен для непрерывной синусоиды времени. Когда вы берете DFT дискретной синусоидальной волны в цифровом компьютере, вы в основном берете Фурье-преобразование синусоидального и дискретизированного синуса, а затем дискретизируете его в частотной области. Это вызывает спектральную утечку. См. Http://w.astro.berkeley.edu/~jrg/ngst/fft/leakage.html.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.