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

11

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

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

С той же логикой ничто не помешает вам принять обратное преобразование Фурье вашего исходного входного сигнала во временной области ... будет ли это когда-нибудь полезным? Почему или почему нет?

tjwrona1992
источник

Ответы:

9

"Есть ли практическое применение?" Определенно да, хотя бы для проверки кода и связанных ошибок.

«Теоретически, теория и практика совпадают. На практике они не совпадают». Итак, математически нет, как ответил Мэтт. Потому что (как уже ответили), (с точностью до потенциального коэффициента масштабирования). Однако это может быть полезно в вычислительном отношении, поскольку приведенное выше уравнение обычно реализуется с помощью дискретного преобразования Фурье и его быстрого аватара, FFT.F(F(x(t)))=x(t)

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

данные, его двойное отражение FFT и ошибка

Если ошибка не относительно мала, то в коде, который вы используете, могут быть ошибки.

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

xk+1=Re(f(f(f(f(xk)))))
fmax|xkx0|

данные, его четырехкратное БПФ и максимальные ошибки за итерации

Как видите, порядок величины ошибки изменился из-за размера сигнала. Плюс максимальная ошибка неуклонно увеличивается. После итераций он остается достаточно маленьким. Но вы можете догадаться, что при кубе умножение на умножение на вокселей и миллионах итераций эта ошибка может стать незначительной.10001000×1000×1000

Ограничение ошибки и оценка ее поведения по итерациям может помочь выявить такое поведение, а затем уменьшить его путем соответствующего определения порога или округления.

Дополнительная информация:

Лоран Дюваль
источник
1
Мне действительно нравится этот ответ, и я бы отметил его как принятый ответ, но я думаю, что большинство людей, которые приходят на этот вопрос, будут искать теоретическую информацию, которую Мэтт предоставил в ссылке. +1 хотя за отличный ответ.
tjwrona1992
1
Я действительно ценю ваш комментарий. Однако я обновил ответ соответствующими цифрами, чтобы показать, что ошибки в дискретных реализациях Фурье имеют значение.
Лоран Дюваль
17

Нет, двойное преобразование Фурье эквивалентно инверсии времени (или инверсии любого измерения, в котором вы находитесь). Вы просто получаете раз постоянную, которая зависит от типа масштабирования, которое вы используете для преобразования Фурье.x(t)

Обратное преобразование Фурье, применяемое к сигналу во временной области, дает только спектр с инверсией частоты. Посмотрите на этот ответ для более подробной информации.

Мэтт Л.
источник
4
Вы просто рекурсивно взорвали мой разум.
tjwrona1992
Должен ли я проиллюстрировать, что Мэтт. L сказал, но в 2D с моим кодом? то есть мы получаем f (-x, -y).
Мачупичу
@Machupicchu, да, это выглядит правильно.
tjwrona1992
хаха, тогда ты можешь выбрать мой ответ и самый верхний ^^ (у него 53K репутация, так что нет
различий
Сразу после того, как я сказал, что понял, что, возможно, есть более простые способы, чем двойное преобразование Фурье во время, инвертирование сигнала хаха
tjwrona1992
16

В то время как преобразования Фурье непосредственно дважды подряд просто дает тривиальную временную инверсию , которая была бы гораздо дешевле реализовать без FT, там есть полезные вещи , которые можно сделать, взяв преобразование Фурье, применяя некоторые другие операции, а затем снова Фурье преобразует результат этого. Наиболее известным примером является автокорреляция , которая является своего рода сверткой сигнала с самим собой. И свертки O ( n 2 ), если реализованы наивно, но только O ( n · log n)) при обходе с помощью преобразования Фурье. Таким образом, автокорреляция обычно выполняется путем FT-сигнала, взятия абсолютного квадрата и IFT-преобразования его во временную область.

leftaroundabout
источник
2
Также имеется кепстр , обратное преобразование Фурье от логарифма преобразования Фурье. Может использоваться для обнаружения периодических сигналов.
Олли Нимитало
12

2D-преобразование Фурье (2D-DFT) используется при обработке изображений, поскольку изображение можно рассматривать как 2D-сигнал. Например, для изображения в градациях серого , , это означает, что в координатах и изображение имеет значение интенсивности z. Посмотрите на это, например:II(x,y)=zxy

https://ch.mathworks.com/help/matlab/ref/fft2.html

Попробуй это:

x=imread('cameraman.tif');
X=fft2(fft2(x));
imagesc(abs(X));

и сравнить с:

x=imread('cameraman.tif');
X= ifft2(fft2(x));
imagesc(abs(X));

скорее так. Я применил fft2 к разам, а не ifft2 во второй раз. Я думаю, что это иллюстрирует то, что @Matt L. сказал:

«Взятие преобразования Фурье дважды эквивалентно инверсии времени»,

Вы можете видеть, что изображение инвертировано из-за мнимого отрицательного -i вместо положительного в ifft ().

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

Я также сделал это для 1D сигнала (например, временного):

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

Machupicchu
источник
Я знаю, что существует такая вещь, как двумерное преобразование Фурье, но это не то же самое, что принимать входной сигнал и проходить его по алгоритму, а затем принимать выходные данные этого прогона и повторять его снова.
tjwrona1992
1
Преобразование Фурье отделимо.
Мачупичу
Мой вопрос также будет применяться для 2D-преобразования Фурье. Теоретически можно взять двумерный входной сигнал, применить двумерное преобразование Фурье, затем взять двумерный выходной сигнал и использовать его в качестве входного, а затем снова применить двумерное преобразование Фурье.
tjwrona1992
посмотрите в Matlab, что произойдет, если вы сделаете следующее: ср. Я обновил свой ответ
Мачупичу
1
Я бы посоветовал вам использовать реальную часть вместо абсолютного значения
Лоран Дюваль
6

Для ответа на второй вопрос, в цифровой связи существует технология используется в мобильных телефонах прямо сейчас , что позволяет эффективно использовать применение IFFT в сигнал временной области. OFDM применяет IFFT к последовательности данных во временной области в передатчике, а затем обращает ее с помощью FFT в приемнике. В то время как литературе нравится использовать IFFT-> FFT, на самом деле не имеет значения, какой из них стоит первым.

схема передатчика OFDM

Ключевое преимущество здесь тесно связано с ответом слева. Существует тип искажения, который называется многолучевым замиранием , и сотовые телефоны в густонаселенных городских районах сталкиваются с большим количеством таких проблем. Нам нравится моделировать многолучевое замирание как свертку с неизвестными коэффициентами. Поскольку цепочка событий выглядит примерно так: IFFT-> Transmit-> Apply multipath-> Receive-> FFT, замирание из-за многолучевого распространения пройдет через FFT и станет простым точечным умножением с неизвестными значениями. Эти значения намного легче предсказать и исправить, чем коэффициенты свертки.

Этот эффект также делает сигнал более устойчивым к многолучевому распространению / замиранию, которое может поглотить (или «обнулить») весь частотный канал. Эта статья описывает, как

Такое многолучевое распространение может создавать глубокие спектральные нули в полосе частот принимаемых радиосигналов из-за деструктивной интерференции двух копий сигнала, поступающего в несколько разные моменты времени. Нуль в OFDM может убрать одну или несколько поднесущих. Тот же ноль в QAM с одной несущей может отбрасывать пакет последовательно смежных символов, в зависимости от конкретного шаблона данных в этот момент. В крайних случаях потеря сигнала даже возможна. Затем он получает возможность FEC восстановить исходную последовательность данных.

myeslf
источник
Вау, это невероятно интересно! Спасибо! :)
tjwrona1992
1

Эта информация была предоставлена ​​пользователем "Birdwes", но у него не было достаточно репутации, чтобы публиковать ее сам, поэтому я опубликую ее здесь для него, потому что она кажется актуальной и полезной.

«У меня недостаточно очков на этом форуме, чтобы добавить комментарий, поэтому я делаю это здесь: взгляните на исходный код Accord.Math Hilbert Transform, и вы поймете, почему это может быть приемлемым вариантом: https: //github.com/primaryobjects/Accord.NET/blob/master/Sources/Accord.Math/Transforms/HilbertTransform.cs

Практическое использование включает создание передатчиков SSB или почти любой план модуляции. Посмотрите на модуляцию IQ и вы увидите, почему фазовый сдвиг на -90 градусов имеет значение. Продукт тригонометрических принципов. например, https://user.eng.umd.edu/~tretter/commlab/c6713slides/ch7.pdf

Преобразование Гильберта использует средний шаг между БПФ обнуления отрицательных компонентов. Вы можете злоупотреблять этим, чтобы отфильтровать и другие частоты. "

tjwrona1992
источник