Я пробовал гуглить и википедировать это, но я не получил никаких ответов, кроме «это потому, что частота входного сигнала находится между двумя корзинами».
Я понимаю, что это причина, но я не могу понять, почему утечка распространяется на несколько соседних бункеров, а не только на один соседний бункер.
Чтобы проиллюстрировать, о чем я говорю, вот некоторые смоделированные данные (код в конце поста):
Выше приведен спектр БПФ (построенный в логарифмическом масштабе) синусоидальной волны с частотой 10. Частота дискретизации равна единице, а число выборок равно 100. График сдвинут по БПФ. Там явно только пик в бункере 10, а остальные порядка числовой ошибки, или там около.
Это частотный спектр на сгенерированной частоте 10,1. Очевидно, что существует «утечка» в большее количество бункеров, чем в непосредственно смежный бункер.
Это сюжет для частоты 10,5.
Вопрос: Почему существует эта утечка, и почему она распространяется на все другие ячейки, а не непосредственно на соседнюю ячейку?
Код, для тех, кто заинтересован (код Python)
import numpy as np
import matplotlib.pyplot as plt
xFreq = 10.5
xSize = 100.0
xPeriod = xSize/xFreq
x = np.linspace(1,xSize,xSize)
data = np.sin(2*np.pi*x/xPeriod)
fft = np.fft.fft(data)
fft = np.fft.fftshift(fft)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(abs(fft), "o")
ax.set_yscale('log')
plt.show()
Я изменил xFreq
значение с 10.0
на 10.5
и т. Д.
источник
Ответы:
БПФ имеет конечную длину и, таким образом, представляет собой прямоугольное окно по умолчанию в потоке данных. Окно во временной области приводит к свертке в частотной области с преобразованием окна. Обратите внимание, что преобразование прямоугольного окна является функцией Sinc (sin (x) / x), которая имеет бесконечную ширину. Это не просто 2 контейнера по ширине. Таким образом, пульсации функции Синка будут проявляться как «утечка» вдали от любого спектрального пика, который не является идеально периодическим по длине БПФ.
На рисунке ниже показана часть частотной характеристики функции sinc. Когда тон центрируется на одном из элементов разрешения, все остальные точки выровнены с нулями в частотной характеристике. Если он не центрирован на ячейке, то это похоже на сдвиг всей частотной характеристики, что приводит к тому, что другие ячейки попадают на ненулевые части частотной характеристики.
Другой способ взглянуть на это состоит в том, что БПФ - это просто банк фильтров, в котором каждый уровень полосы стоп-сигнала фильтра имеет множество пульсаций и, конечно, не бесконечен в затухании более чем на 1 интервал от центральной частоты. Некоторые окна (от фон Ганна и т. Д.), Кроме прямоугольных, имеют нижние ограничительные полосы, что является одной из причин их популярного использования.
источник
hotpaw2
ответ хороший, но я бы хотел немного уточнитьuser5133
комментарий:и в то же время ответить на вопрос тоже. Обратите внимание, что я являюсь экспертом в этой области - не стесняйтесь комментировать, исправлять или подтверждать.
Дискретное преобразование Фурье (DTFT) определяется над (а не только !) КакZ { 1 , 2 , … , N}
На практике измеренные сигналы являются конечными ; Обозначим длину по . Конечный сигнал может быть расширен периодичностью над . Дискретное преобразование Фурье (ДПФ) определяется что соответствует дискретным частотам DTFT, кроме случаев, когда в не в . Другими словами, это соответствует DTFT для где - прямоугольная функция, равная 1, когдаN N Z
Но преобразование Фурье произведения - это свертка преобразований Фурье:
так что ДПФ исходного сигнала является сверткой ДПФ его "периодизированной" версии с преобразованием Фурье прямоугольного окна ... которое является потому что (в непрерывной структуре и с центром в 0 до упростить ...):синк
Свертка с создает наблюдаемые боковые лепестки (за исключением некоторых конкретных случаев).синк
источник