Фильтрация FIR на основе FFT с использованием метода наложения-добавления
фильтрация данных в векторе y = fftfilt(d,x)x с digitalFilter объект d.
fftfilt фильтрует данные, используя эффективный основанный на БПФ способ наложения-сложения
[1], способ фильтрации в частотной области, который работает только для КИХ-фильтров путем объединения последовательных фильтруемых в частотной области блоков входной последовательности. Операция, выполняемая fftfilt описывается во временной области уравнением разности:
+⋯+b (nb + 1) x (n − nb)
Эквивалентным представлением является Z-преобразование или описание частотной области:
1) z − nb) X (z)
fftfilt использование fft для реализации метода наложения-добавления. fftfilt разрывает последовательность ввода x в блоки данных длины L, где L должен быть больше длины фильтра N.
![]()
и сворачивает каждый блок с фильтром b около
y = ifft(fft(x(i:i+L-1),nfft).*fft(b,nfft));
где nfft - длина БПФ. fftfilt перекрывает последовательные выходные секции n-1 точки, где n - длина фильтра и суммирует их.

fftfilt выбирает ключевые параметры L и nfft различными способами, в зависимости от того, укажите ли вы длину БПФ n для фильтра и сигнала. Если не указано значение для n (которая определяет длину БПФ), fftfilt автоматически выбирает следующие ключевые параметры:
Если length(x) больше, чем length(b), fftfilt выбирает значения, которые минимизируют количество блоков, умноженное на число триггеров на БПФ.
Если length(b) больше или равно length(x), fftfilt использует один БПФ длины
2^nextpow2(length(b) + length(x) - 1)
Это вычисляет
y = ifft(fft(B,nfft).*fft(X,nfft))
При вводе значения для n, fftfilt выбирает длину БПФ, nfftиз 2^nextpow2(n) и длина блока данных nfft - length(b) + 1. Если n меньше, чем length(b), fftfilt наборы n кому length(b).
[1] Оппенгейм, Алан В., Рональд В. Шефер и Джон Р. Бак. Дискретно-временная обработка сигналов. 2-я эд. река Верхнее Седло, Нью-Джерси: Прентис Холл, 1999.
conv | designfilt | digitalFilter | filter | filtfilt