Процессор: Intel® Core™ i3-3220 3.30GHz
Длина входного массива – 192000 семпла, белый шум, нормированный к -1..1
Длина FIR – от 128 до 131072 taps, белый шум, нормированный к -1..1
Свёртка через БПФ осуществлялась методом overlap-add при помощи библиотеки FFTW
Точность числа с плавающей точкой - 64 бита
В архиве FirTest.zip – сама программа, исходный код, исходные данные. Для запуска программы может потребоваться Распространяемый пакет Visual C++ для Visual Studio 2012
Входные данные находятся в файле input.txt
FIR фильтр находится в файле fir.txt
Результаты замеров:
время, мс погрешность, отклонение taps линейная свёртка БПФ отношение среднеквадратическое абсолютное 128 19.73 2.87 6.89 3.79E-16 3.11E-15 256 37.23 2.90 12.83 6.61E-16 5.77E-15 512 72.04 2.88 24.99 1.35E-15 1.51E-14 1024 141.83 2.86 49.57 2.06E-15 2.40E-14 2048 282.63 3.41 82.82 4.00E-15 3.55E-14 4096 573.50 4.26 134.75 5.95E-15 5.51E-14 8192 1220.53 4.84 252.15 1.42E-14 1.42E-13 16384 2293.25 5.30 432.51 2.20E-14 2.59E-13 32768 4899.92 6.49 755.29 4.60E-14 4.51E-13 65536 9762.71 8.53 1144.71 7.85E-14 1.03E-12 131072 19671.20 13.02 1510.69 1.43E-13 1.81E-12
В наихудшем случае максимальная пиковая погрешность составила 1.81E-12 = 0.00000000000181
Это примерно -230 дБ
Чтобы она отразилась на цифро-аналоговом преобразовании, необходимо как минимум 40 бит (без дизеринга)
Социальные закладки