Как сделать Простое использование Фильтра FIR Matlab?

Версия языка Common LISP:

(defun ! (n) (reduce #'* (loop for i from 2 below (+ n 1) collect i)))

, Кажется, довольно быстр.

* (! 42)

1405006117752879898543142606244511569936384000000000
5
задан HostileFork 7 January 2010 в 22:25
поделиться

2 ответа

Простейший вариант - это фильтр "оконного sinc":

fs = 44100;
cutoff = 250;
t = -256:256;  % This will be a 513-tap filter
r = 2*cutoff/fs;
B = sinc(r*t).*r .* blackman(length(t))';
freqz(B);

Длина фильтра (см. t = ... ) управляет шириной полосы перехода. . пороговое значение в данном случае составляет -6 дБ. blackman - это имя популярного окна. Вы можете проверить эту страницу Википедии для получения дополнительной информации об оконных функциях. В основном они имеют разные компромиссы между шириной полосы перехода и подавлением полосы задерживания.

11
ответ дан 13 December 2019 в 19:29
поделиться

Если вам не нужна другая форма амплитудного спектра, сделайте точно так, как предлагал Сэллибитце, только замените функцию sinc действительной частью обратного преобразования Фурье желаемой амплитудной характеристики ( с задержкой для получения причинно-следственной симметричной импульсной характеристики).

0
ответ дан 13 December 2019 в 19:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: