Основанная на БПФ КИХ-фильтрация с помощью перекрытия - добавляет метод
y = fftfilt(b,x)
y = fftfilt(b,x,n)
y = fftfilt(d,x)
y = fftfilt(d,x,n)
y = fftfilt(gpuArrayb,gpuArrayX,n)
fftfilt фильтрует данные с помощью эффективного основанного на БПФ метода перекрытия - добавляют, метод фильтрации частотного диапазона, который работает только на КИХ-фильтры.
y = fftfilt(b,x) фильтрует данные в векторном x с фильтром, описанным вектором коэффициентов b. Это возвращает вектор данных y. Операция, выполняемая fftfilt, описана во временном интервале разностным уравнением:
Эквивалентное представление является описанием частотного диапазона или Z-преобразованием:
По умолчанию fftfilt выбирает длину FFT и длину блока данных, которые гарантируют эффективное время выполнения.
Если x является матрицей, fftfilt фильтрует свои столбцы. Если b является матрицей, fftfilt применяет фильтр в каждом столбце b к сигнальному вектору x. Если b и x являются оба матрицами с одинаковым числом столбцов, i th столбец b используется, чтобы отфильтровать i th столбец x.
y = fftfilt(b,x,n) использование n, чтобы определить длину БПФ. См. Алгоритмы для получения информации.
y = fftfilt(d,x) фильтрует данные в векторном x с объектом digitalFilter, d. Используйте designfilt, чтобы сгенерировать d на основе спецификаций частотной характеристики.
y = fftfilt(d,x,n) использование n, чтобы определить длину БПФ.
y = fftfilt(gpuArrayb,gpuArrayX,n) фильтрует данные в объекте gpuArray, gpuArrayX, с КИХ-коэффициентами фильтра в gpuArray, gpuArrayb. Смотрите функции MATLAB Выполнения на графическом процессоре (Parallel Computing Toolbox) для получения дополнительной информации об объектах gpuArray. Используя fftfilt с gpuArray объекты требует программного обеспечения Parallel Computing Toolbox™. Пошлите к Поддержке графического процессора Релизом (Parallel Computing Toolbox) видеть то, что поддерживаются графические процессоры. Отфильтрованные данные, y, являются объектом gpuArray. Смотрите, что Перекрытие - Добавляет, что Фильтрация на графическом процессоре, например, перекрытия - добавляет фильтрацию на графическом процессоре.
fftfilt работает и на действительные и на комплексные входные параметры.
filterКогда входной сигнал является относительно большим, выгодно использовать fftfilt вместо filter, который выполняет умножение N для каждой выборки в x, где N является длиной фильтра. fftfilt выполняет 2 операции FFT — БПФ блока сигнала длины L плюс обратный FT продукта БПФ — за счет
½Llog2L
где L является длиной блока. Это затем выполняет L мудрое точкой умножение для общей стоимости
L + L log2L = L (1 + log2L)
умножение. Отношение стоимости поэтому
L (1+log2L) / (N L) = (1 + log2L)/N
который является приблизительно log2L / N.
Поэтому fftfilt становится выгодным когда log2Lis меньше, чем N.
fftfilt использует fft, чтобы реализовать перекрытие - добавляет метод
[1], метод, который комбинирует последовательный частотный диапазон, отфильтровал блоки входной последовательности. 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 выбирает длину FFT, nfft, 2^nextpow2(n) и длины блока данных nfft - length(b) + 1. Если n является меньше, чем length(b), fftfilt устанавливает n на length(b).
[1] Оппенхейм, Алан V, Рональд В. Шафер и Джон Р. Бак. Обработка сигналов дискретного времени. 2-й Эд. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1999.
conv | designfilt | digitalFilter | filter | filtfilt