всплеск моего обратного преобразования Фурье - PullRequest
4 голосов
/ 19 декабря 2009

Я пытаюсь сравнить два набора данных в MATLAB. Для этого мне нужно отфильтровать наборы данных путем преобразования Фурье данных, фильтрации и обратного преобразования Фурье.

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

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

Любая помощь будет большой благодарностью.

alt text

Ответы [ 3 ]

8 голосов
/ 29 декабря 2009

При использовании DFT вы должны помнить, что DFT предполагает периодический сигнал (как суперпозиция гармонических функций). Как видите, начальная точка является точным продолжением последней точки в виде гармонической функции.

Вы выполняли заполнение нулями в области спектра? В любом случае, Windowing может уменьшить Overshooting .

Может быть полезно узнать больше о фильтре и исходных данных.

1 голос
/ 15 марта 2010

Если вы говорите, что всплеск близок к нулю частоты, я отвечаю проверить компонент постоянного тока.

Вы, кажется, интересуетесь формой, поэтому делаете

x = x - mean(x)

или

x -= mean(x)

или

x -= x.mean()

(я люблю NumPy!)

просто заставит набор данных начинаться с нулевой амплитуды на нулевой частоте и продолжить сопоставление амплитуды спектров.

(в качестве примечания: проверяли ли вы, что вы используете fftshift и ifftshift? - это всегда было для меня источником проблем)

0 голосов
/ 19 декабря 2009

Может быть числовым эквивалентом явления Гиббса . Если это правильно, то нет способа исправить это, кроме фильтрации.

...