Почему на выходе БПФ синусоидальной волны 1 Гц величина 1 Гц ведет себя как синусоида?

Я занимаюсь разработкой небольшого программного обеспечения в.NET, которое принимает сигнал от датчика в режиме реального времени и принимает БПФ этого сигнала, который также отображается в режиме реального времени.

Я использовал библиотеку alglib для функции FFT. Теперь моя цель - наблюдать интенсивность определенной частоты во времени.

Чтобы проверить программное обеспечение, я подал на его вход синусоидальную частоту 1 Гц. На следующем изображении показан снимок экрана программного обеспечения. Верхний график показывает частотный спектр, показывающий пик при 1 Гц. Однако, когда этот пик наблюдается во времени, как показано на нижнем графике, интенсивность ведет себя как синусоида.

Моя частота дискретизации составляет 30 кГц. То, что я не понимаю, как я получаю этот синусоидальный сигнал и почему величина частоты ведет себя так?

1 ответ

Это пример эффектов Windowing. Это вытекает из того факта, что БПФ не является точной операцией, за исключением случаев, когда речь идет о идеально периодических сигналах. Когда вы отображаете свой сигнал, вы превращаете его в меньший фрагмент, который может не повторяться идеально. Алгоритм FFT вычисляет спектр этого фрагмента аудио, повторяемого бесконечно. Поскольку это не идеальная синусоида, вы не получите точное значение для результата. Кроме того, мы можем видеть, что если ваше окно не совпадает с частотой, кратной частоте вашего сигнала, то оно будет сдвигаться по фазе относительно вашего сигнала, окно захватывает немного другой фрагмент вашего сигнала, а FFT вычисляет спектр другого бесконечно повторяющегося сигнала. Если вы подумаете об этом, эта разность фаз будет, естественно, также периодической, так как окно догоняет следующий период вашего сигнала.

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

Другие вопросы по тегам