Фильтрация конечной импульсной характеристики на основе БПФ с использованием метода перекрытия-суммы
отфильтровывает данные в векторных y
= fftfilt(d
,x
)x
с digitalFilter
d объекта
.
fftfilt
фильтрует данные с помощью эффективного FFT-основанного метода наложения-сложения
[1], частотного диапазона метода фильтрации, который работает только для конечной импульсной характеристики фильтров путем объединения последовательных частотных диапазонов отфильтрованных блоков входа последовательности. Операция, выполненная fftfilt
описывается во временном интервале разностным уравнением:
Эквивалентным представлением является Z-преобразование или описание частотного диапазона:
fftfilt
использование fft
для реализации метода перекрытия-суммы. fftfilt
нарушает последовательность входа x
в блоки length L data, где 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] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Обработка сигнала в дискретном времени. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.
conv
| designfilt
| digitalFilter
| filter
| filtfilt