Помогите с БИХ фильтром Чебышева. Никак не могу сообразить, в чём дело.
Я в матлабе написал програмный аналог цифрового фильтра Чебышева второго порядка.
но его АЧХ в полосе пропускания не удовлетворяет задаваемым требованиям. Она либо значительно больше 1 либо менише половины.
Код
function ChebyshevBiPart_Prorotip
%
% Бих фильтр нижних частот Чебышева первого рода
%
FP = 500;%граничная частота полосы пропускания
FS = 2000;%граничная частота полосы задерживания
FD = 8000;%частота дискретизаци
FOrder = 2;%порядок фильтра
DeltaP = 1 - 10 ^ (- 3 /20);%0.01;% точность аппроксимации в полосе пропускания
DeltaS = 0.01;
%пересчитываем частоты
WPA = tan(pi * FP / FD )
WSA = tan(pi * FS / FD )
%находим неравномерность
NUniformity = sqrt( 1 /((1 - DeltaP) ^ 2) - 1 );
%находим полюсы нижнечастотного прототипа
PoleRe0 = - sin(1 * pi / (2 * FOrder)) * sinh(1 / FOrder * asinh(1 / NUniformity))
PoleIm0 = cos(1 * pi / (2 * FOrder)) * cosh(1 / FOrder * asinh(1 / NUniformity))
%полюса сопряжены и это просто формальность
PoleRe1 = - sin(3 * pi / (2 * FOrder) * sinh(1 / FOrder * asinh(1 / NUniformity))
PoleIm1 = cos(3 * pi / (2 * FOrder)) * cosh(1 / FOrder * asinh(1 / NUniformity))
%Находим коэффециенты полинома знаменателя в Z - плоскости A* Z^2 + B * Z + C
Modul = PoleRe0 ^ 2 + PoleIm0 ^ 2;
A = (1 - 2 * PoleRe0 * WPA + Modul * WPA * WPA)
B = 2 * (Modul * WPA* WPA - 1)
C = (1 + 2 * PoleRe0 * WPA + Modul * WPA * WPA)
Numen = [1 2 1] .* WPA .* WPA ./ A %находим числитель передаточной функции
Denom = [1 (B/A) (C/A)] %находим знаменатель передаточной функции
[W, A] = AFC(Numen ,Denom);%Функция вычисления АЧХ
plot(W, A)
%Заранее спасибо.
%
% Бих фильтр нижних частот Чебышева первого рода
%
FP = 500;%граничная частота полосы пропускания
FS = 2000;%граничная частота полосы задерживания
FD = 8000;%частота дискретизаци
FOrder = 2;%порядок фильтра
DeltaP = 1 - 10 ^ (- 3 /20);%0.01;% точность аппроксимации в полосе пропускания
DeltaS = 0.01;
%пересчитываем частоты
WPA = tan(pi * FP / FD )
WSA = tan(pi * FS / FD )
%находим неравномерность
NUniformity = sqrt( 1 /((1 - DeltaP) ^ 2) - 1 );
%находим полюсы нижнечастотного прототипа
PoleRe0 = - sin(1 * pi / (2 * FOrder)) * sinh(1 / FOrder * asinh(1 / NUniformity))
PoleIm0 = cos(1 * pi / (2 * FOrder)) * cosh(1 / FOrder * asinh(1 / NUniformity))
%полюса сопряжены и это просто формальность
PoleRe1 = - sin(3 * pi / (2 * FOrder) * sinh(1 / FOrder * asinh(1 / NUniformity))
PoleIm1 = cos(3 * pi / (2 * FOrder)) * cosh(1 / FOrder * asinh(1 / NUniformity))
%Находим коэффециенты полинома знаменателя в Z - плоскости A* Z^2 + B * Z + C
Modul = PoleRe0 ^ 2 + PoleIm0 ^ 2;
A = (1 - 2 * PoleRe0 * WPA + Modul * WPA * WPA)
B = 2 * (Modul * WPA* WPA - 1)
C = (1 + 2 * PoleRe0 * WPA + Modul * WPA * WPA)
Numen = [1 2 1] .* WPA .* WPA ./ A %находим числитель передаточной функции
Denom = [1 (B/A) (C/A)] %находим знаменатель передаточной функции
[W, A] = AFC(Numen ,Denom);%Функция вычисления АЧХ
plot(W, A)
%Заранее спасибо.