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

Фильтрация БИФ Батреворта 10го порядка

Добавлено: Пн май 11, 2015 15:55:24
wanes101
здравствуйте
Коэффициенты рассчитал, вроде понял как по этому алгоритму считать
Изображение
Коэффициенты для фильтра
частота дискретизации 102400, фильтр режекторный с полосой 4000-5000
такие коэффициенты
%a5 a4 a3 ... a0
a=[0.905475 -8.71601 38.0856 -99.4697 171.921 -205.454 171.921 -99.4697 38.0856 -8.71601 0.905475];
%b5 b4 b3 ... b1
b=[0.819867 -8.04842 35.8696 -95.5494 168.446 -205.333 175.271 -103.451 40.4093 -9.43477];

в matlabe написал функцию для вычисления по этой схеме:
function y=filt(x)
N=1024;
[a,b]=get_k();
yi(1:10)=0;
xi(1:11)=0;
y=[];
for(n=1:N)
xi(1:10)=xi(2:11);
xi(11)=x(n);
yi(11)=sum(a.*xi)+sum(-b.*yi);
y(n)=yi(11);
yi=yi(2:11);
end
end

function [a,b]=get_k
%a5 a4 a3 ... a0
a=[0.905475 -8.71601 38.0856 -99.4697 171.921 -205.454 171.921 -99.4697 38.0856 -8.71601 0.905475];
b=[0.819867 -8.04842 35.8696 -95.5494 168.446 -205.333 175.271 -103.451 40.4093 -9.43477];
end

но что то не то, в этом и вопрос.

Входной сигнал пила с частотой 1500, Объем выборки 1024 вот так выглядит
Изображение
На выходе такое

1.0e+07 *

Columns 1 through 12
0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000

Columns 13 through 24

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000

Columns 25 through 36

0.0000 0.0000 0.0000 0.0000 0.0001 0.0001 0.0002 0.0003 0.0005 0.0007 0.0010 0.0015

Columns 37 through 48

0.0023 0.0037 0.0062 0.0108 0.0187 0.0324 0.0554 0.0933 0.1548 0.2537 0.4124 0.6675

Columns 49 through 50

1.0803 1.7534

и т.д. увеличивается в бесконечность.