Как сделать простой FIR-фильтр с использованием Matlab? - PullRequest
5 голосов
/ 15 ноября 2009

Как я могу сделать простой FIR-фильтр низких частот, используя Matlab (без использования встроенной функции)?

Пример проблемы:

Implement a FIR LPF with cut-off frequency 250Hz

может также потребоваться, чтобы частота дискретизации была задана ...

Попытка решения или что я уже знаю:

x = [...] -> input signal
A = 1; -> Since this is FIR
B = [?????]
y = filter(B, A, x) -> Output signal

Afaik, B должен содержать коэффициенты для FIR-фильтра. Но; как рассчитать эти коэффициенты, учитывая, что у меня есть только частота среза?

Ответы [ 3 ]

11 голосов
/ 16 ноября 2009

Самое простое - это фильтр "windowed 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=...) контролирует ширину полосы перехода. cutoff в этом случае точка -6 дБ. blackman - это название популярного окна. Вы можете проверить эту страницу Википедии для получения дополнительной информации об оконных функциях. Они в основном имеют различные компромиссы между шириной полосы перехода и отклонением полосы останова.

0 голосов
/ 02 мая 2013

Поскольку коэффициенты для фильтра LTI являются импульсной характеристикой во временной области, вы можете создать частотную характеристику в matlab, указав вектор амплитуды и фазовый вектор, а затем инвертировать их по БПФ, чтобы получить свои коэффициенты, например, что-то вроде A = [ 1 .9 .8 .5 .2 .1 0], theta=[0 0 0 0 0 0 0], затем H=A.*exp(j*theta), затем coefs = ifft(H)

0 голосов
/ 16 ноября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...