Страница 1 из 1

Применение фильтра к дискретной последовательности

Добавлено: 29 июн 2017, 20:47
kostar
Добрый вечер.
Поскажите пожалуйста, как правильно применять разностное уравнение к отсчетам дискретного сигнала, чтобы получался такой же результат, как и с помощью матлабовской функции filter()?

Цифровой ФНЧ Баттерворта 8-го порядка БИХ для частоты дискретизации 1 кГц и частоты среза 200 Гц.
Коэффициенты рассчитаны здесь http://www-users.cs.york.ac.uk/~fisher/ ... /trad.html Выдает сразу все полюса и нули фильтра, гравики и С код.

Код: Выделить всё

Fs = 1000;
T = 1/Fs;
L = 1000;
t = (0:L-1)*T;
x = 5*sin(2*pi*50*t) + 5*sin(2*pi*250*t) + 5*sin(2*pi*400*t);

% Коэффиценты разностного уравнения
b = [1 8 28 56 70 56 28 8 1];
a = [-1.5905664958 2.0838133003 -1.5326255633 0.8694409155 ...
    0.0008613684 -0.3191759433 0.0820901316 -0.0122466702];

figure; freqz(b,a);

y = zeros(size(x));
for n = length(b):length(x)
    y(n) = x(n-8:n) * b(:) + y(n-8:n-1) * a(:);
end

figure; plot(y);

Y = filter(b,a,x);
figure; plot(Y)

Re: Применение фильтра к дискретной последовательности

Добавлено: 30 июн 2017, 09:59
kostar
Нашёл ответ здесь http://www.cyberforum.ru/matlab/thread5 ... ost3047907
Расписано, как работает функция filter() в матлаб.

Re: Применение фильтра к дискретной последовательности

Добавлено: 30 июн 2017, 10:14
Бахурин Сергей
Вопрос ещё актуален?

Re: Применение фильтра к дискретной последовательности

Добавлено: 30 июн 2017, 10:21
Бахурин Сергей

Код: Выделить всё

Fs = 1000;
T = 1/Fs;
L = 1000;
t = (0:L-1)*T;
x = 5*sin(2*pi*50*t) + 5*sin(2*pi*250*t) + 5*sin(2*pi*400*t);

% Коэффиценты разностного уравнения
b = [1 8 28 56 70 56 28 8 1];
a = [1 -1.5905664958 2.0838133003 -1.5326255633 0.8694409155 ...
 0.0008613684 -0.3191759433 0.0820901316 -0.0122466702];

figure; freqz(b,a);
x = [zeros(1, 9) x];
y = zeros(size(x));
for n = length(b):length(x)
 y(n) = x(n:-1:n-8) * b(:) - y(n-1:-1:n-8) * a(2:end)';
end

figure; plot(y);

Y = filter(b,a,x);
figure; plot(Y)

Re: Применение фильтра к дискретной последовательности

Добавлено: 04 июл 2017, 19:01
kostar
Спасибо, Сергей!