Недавно я понял, что БПФ не идеальны. Это означает, что если я возьму сигнал, а затем возьму его БПФ, а затем сделаю обратное БПФ, результирующий выходной сигнал не будет совпадать с входным. Вот изображение, чтобы показать вам, что я имею в виду:
Я думаю, что изображение довольно очевидно. Сигнал IFFT представляет собой просто обратное преобразование «спектра БПФ», а график «Разница» представляет собой разницу между сигналом IFFT и исходным сигналом ( ).
Очевидно, есть некоторые артефакты, хотя они действительно маленькие. Я хотел бы знать, почему они происходят в первую очередь. Это из-за конечного окна преобразования Фурье? Или из-за чего-то в алгоритме FFT?
fft
fourier-transform
dft
Kitchi
источник
источник
Ответы:
Различия, которые вы видите, связаны с числовыми ошибками в формате с плавающей запятой. Все операции, необходимые для выполнения БПФ и обратного БПФ, могут выполняться только с конечной точностью, и вы продемонстрировали результат этой конечной точности на нижнем правом графике.
источник
В целом число не может быть представлено точно в цифровом виде. Введена ошибка. Если вы находитесь в Matlab, вы можете написать eps по команде, она даст вам номер.
Ошибка, которую вы видите на графике, находится в диапазоне, возвращаемом eps (то есть 2 ^ (- 52)).
Даже если вы ожидаете реальных значений в вашем выводе от вашего IFFT, вы можете увидеть, что ваша мнимая часть не совсем равна нулю. То же самое.
источник