"Есть ли практическое применение?" Определенно да, хотя бы для проверки кода и связанных ошибок.
«Теоретически, теория и практика совпадают. На практике они не совпадают». Итак, математически нет, как ответил Мэтт. Потому что (как уже ответили), (с точностью до потенциального коэффициента масштабирования). Однако это может быть полезно в вычислительном отношении, поскольку приведенное выше уравнение обычно реализуется с помощью дискретного преобразования Фурье и его быстрого аватара, FFT.F(F(x(t)))=x(−t)
Первая причина возникает из-за желания проверить, что реализация Фурье, независимо от того, написана ли она вами, кем-то другим или из библиотеки, делает то, что должна делать с вашими данными. Порядок выборки, коэффициенты масштабирования, ограничения на тип ввода (реалистичность, битовая глубина) или длина являются источниками потенциальных последующих ошибок для реализаций Фурье, таких как FFT. Поэтому в качестве проверки работоспособности всегда полезно проверять, что реализованные версии наследуют, хотя бы приблизительно, теоретические свойства. Как вы увидите, как показывает Мачупичу, вы не восстанавливаете реальный реверсированный ввод: часто мнимая часть не точно равна нулю, а реальная часть - это то, что ожидалось, но с небольшой относительной погрешностью из-за несовершенных компьютерных вычислений. (с плавающей точкой) в пределах машинно-зависимого допуска, Это видно по следующей картинке. БПФ применяется дважды к случайному сигналу с 32 выборками и переворачивается. Как видите, ошибка невелика, с использованием поплавков двойной точности.
Если ошибка не относительно мала, то в коде, который вы используете, могут быть ошибки.
Второй относится к огромным объемам данных или большому количеству повторных вычислений БПФ, как с томографией. Там предыдущие небольшие относительные ошибки могут накапливаться и распространяться, и даже вызывать вычислительные расхождения или ошибки, некоторые детали здесь . Это видно по следующей картинке. Для не очень длинного сигнала ( выборок) мы выполняем следующие итерации:
где обозначает БПФ. Показанная цифра является субдискретизированной И мы вычисляем максимальную ошибкуна каждой итерации.Икс01 е 6Икск + 1= R e ( f( ф( ф( ф( хК) ) )))
еМакс | ИксК- х0|
Как видите, порядок величины ошибки изменился из-за размера сигнала. Плюс максимальная ошибка неуклонно увеличивается. После итераций он остается достаточно маленьким. Но вы можете догадаться, что при кубе умножение на умножение на вокселей и миллионах итераций эта ошибка может стать незначительной.10001000 × 1000 × 1000
Ограничение ошибки и оценка ее поведения по итерациям может помочь выявить такое поведение, а затем уменьшить его путем соответствующего определения порога или округления.
Дополнительная информация:
Нет, двойное преобразование Фурье эквивалентно инверсии времени (или инверсии любого измерения, в котором вы находитесь). Вы просто получаете раз постоянную, которая зависит от типа масштабирования, которое вы используете для преобразования Фурье.х ( - т )
Обратное преобразование Фурье, применяемое к сигналу во временной области, дает только спектр с инверсией частоты. Посмотрите на этот ответ для более подробной информации.
источник
В то время как преобразования Фурье непосредственно дважды подряд просто дает тривиальную временную инверсию , которая была бы гораздо дешевле реализовать без FT, там есть полезные вещи , которые можно сделать, взяв преобразование Фурье, применяя некоторые другие операции, а затем снова Фурье преобразует результат этого. Наиболее известным примером является автокорреляция , которая является своего рода сверткой сигнала с самим собой. И свертки O ( n 2 ), если реализованы наивно, но только O ( n · log n)) при обходе с помощью преобразования Фурье. Таким образом, автокорреляция обычно выполняется путем FT-сигнала, взятия абсолютного квадрата и IFT-преобразования его во временную область.
источник
2D-преобразование Фурье (2D-DFT) используется при обработке изображений, поскольку изображение можно рассматривать как 2D-сигнал. Например, для изображения в градациях серого , , это означает, что в координатах и изображение имеет значение интенсивности z. Посмотрите на это, например:I I(x,y)=z x y
https://ch.mathworks.com/help/matlab/ref/fft2.html
Попробуй это:
и сравнить с:
скорее так. Я применил fft2 к разам, а не ifft2 во второй раз. Я думаю, что это иллюстрирует то, что @Matt L. сказал:
«Взятие преобразования Фурье дважды эквивалентно инверсии времени»,
Вы можете видеть, что изображение инвертировано из-за мнимого отрицательного -i вместо положительного в ifft ().
Я также сделал это для 1D сигнала (например, временного):
источник
Для ответа на второй вопрос, в цифровой связи существует технология используется в мобильных телефонах прямо сейчас , что позволяет эффективно использовать применение IFFT в сигнал временной области. OFDM применяет IFFT к последовательности данных во временной области в передатчике, а затем обращает ее с помощью FFT в приемнике. В то время как литературе нравится использовать IFFT-> FFT, на самом деле не имеет значения, какой из них стоит первым.
Ключевое преимущество здесь тесно связано с ответом слева. Существует тип искажения, который называется многолучевым замиранием , и сотовые телефоны в густонаселенных городских районах сталкиваются с большим количеством таких проблем. Нам нравится моделировать многолучевое замирание как свертку с неизвестными коэффициентами. Поскольку цепочка событий выглядит примерно так: IFFT-> Transmit-> Apply multipath-> Receive-> FFT, замирание из-за многолучевого распространения пройдет через FFT и станет простым точечным умножением с неизвестными значениями. Эти значения намного легче предсказать и исправить, чем коэффициенты свертки.
Этот эффект также делает сигнал более устойчивым к многолучевому распространению / замиранию, которое может поглотить (или «обнулить») весь частотный канал. Эта статья описывает, как
источник
Эта информация была предоставлена пользователем "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
Преобразование Гильберта использует средний шаг между БПФ обнуления отрицательных компонентов. Вы можете злоупотреблять этим, чтобы отфильтровать и другие частоты. "
источник