FFT синусоїди не надходить як очікувалося, тобто єдина точка


14

Циановий графік - це спектр 50 Гц, а пурпурний - синусова хвиля 50,1 Гц (має амплітуду 0,7). Обидва відібрані при 1024 пробах / с. Я здійснив 1024 точок FFT, щоб отримати цей спектр.

Чому лише спектр 50 Гц є єдиним значенням? Чому синус 50,1 Гц складається з інших частот, крім 50,1 Гц; звідки беруться ці нові частоти?

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

Чому це?

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


Не могли б ви опублікувати код, який ви використовували для створення цього сюжету? Моя найкраща здогадка - це те, що ваші сигнали так близько один до одного, ффт не може їх правильно розв’язати. Це чи якесь спектральне змащення, оскільки зразки не співпадають із частотами.
Том Кілі

4
Наведені нижче відповіді правильні. Термін, який ви спостерігаєте, називається спектральним витоком , і він спостерігається при аналізі синусоїди, частота якої не лежить точно в центрі одного з ваших вихідних відрізків DFT.
Джейсон R

будь ласка, чи можу я знати, що ви плануєте проти чого для вас, щоб отримати шип на позначці 50 Гц
Nazario_Jnr

Дивіться цю відповідь, щоб отримати докладний опис того, що таке проблема та як її усунути.
Діліп Сарват

Відповіді:


14

Екуляльно відповідь Метта вже дає один погляд на проблему тут: DFT неявно періодичний як у часовій, так і в частотній області (див. Це питання ). З ваших параметрів ми можемо розрахувати, що ваш період спостереження становить 1 с. Це означає, що ви спостерігаєте 50 періодів тону 50 Гц. Періодично продовжуючи цей інтервал спостереження, завжди буде виникати синусова хвиля. Якщо ви приймаєте тон 50,1 Гц, ви перетворюєте 50,1 періоди коливань. Періодично розширення цього сигналу призведе до стрибків фаз, що спричиняють додаткові спектральні притоки.

fс/NDЖТ=1024 рікГц/1024 рік=1Гц

Обидва описані вище ефекти сприяють спектру, який ви спостерігаєте.


1
Що має сенс. Але просто для більш чіткого спектрального витоку, який ви описали, є проблема з інструментом (FFT) для спостереження спектрів. Це не дефект персинації сигналу. Значить Якщо я "почую" звуковий сигнал частотою 50,1 Гц, він видасться моїм вухам як єдиний тон, а не якийсь "шум". Я правий?
gpuguy

1
Ви абсолютно праві. Це показує, як важливо зрозуміти, що насправді робить DFT, щоб можна було правильно його інтерпретувати. Як сторонне позначення: те, що ви б "почули" в реальній реалізації, також залежить від того, як ви перетворюєте дискретний в аналоговий сигнал.
Дев

11

Це ефект обрізання або вікна синусоїдального сигналу. Потрібно усікати таким чином, що якщо додати урізаний сигнал до усіченого, він все одно буде вихідною синусоїдою.


6

Ви отримаєте лише єдиний результат точки FFT для частоти чистого немодульованого синусоїди, яка є точно цілим періодичним періодом у діафрагмі або ширині FFT. Будь-яка інша частота синусоїди буде відображатися як переплетена з перетворенням (періодичним Sinc) вікна за замовчуванням (прямокутник).

50,1 Гц не є точно періодичним у вікні 1 секунди вашого FFT.

Ці інші відсіки або частоти "витоку" FFT необхідні для відображення розриву, що утворюється між межами вікна будь-яким сигналом, який не є цілим цілим періодичним періодом ширини FFT. Це відбувається тому, що всі базові вектори DFT є точно цілими періодичними в межах ширини DFT і, отже, не мають різкого розриву між кінцем і початком базового вектора. Отже, будь-який сигнал, який не має цих характеристик, не може бути представлений лише одним базовим вектором DFT (і його складним кон'югатом), тому інформація про решту сигналу повинна кудись подаватися.

Оскільки загальна енергія зберігається за допомогою перетворення FFT (теорема Парсеваля), енергія в бункерах "витоку" забирається з пікового відро. Таким чином, величина бункера повинна бути нижчою.


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))

Подивіться, як дві копії сигналу з'єднуються між собою в кінці, щоб зробити безперервну хвилю:

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

Коли це відбувається, енергія FFT повністю міститься в одному баку:

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


1
У мене була така ж проблема, як у ОП. Це було вирішено завдяки встановленню кінцевої точки = False flag. Я думав, що за замовчуванням просторовий простір (закритий, відкритий), але він виявляється (закритий, закритий). Я знайшов помилку завдяки вашому коду.
Трисмегістос

-1

Це відбувається через спектрального витоку та складання вікон. Ідеальна відповідь, тобто імпульсна функція, призначена для постійної синусоїди в часі. Коли ви приймаєте DFT дискретної синусоїди в цифровому комп’ютері, ви в основному приймаєте перетворення Фур'є віконного і відібраного синуса, а потім відбираєте його в частотній області. Це спричиняє витік спектра. Посилання: http://w.astro.berkeley.edu/~jrg/ngst/fft/leakage.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.