Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с БИХ фильтром Чебышева
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
GinGreen
Здравствуйте.
Помогите с БИХ фильтром Чебышева. Никак не могу сообразить, в чём дело.

Я в матлабе написал програмный аналог цифрового фильтра Чебышева второго порядка.
но его АЧХ в полосе пропускания не удовлетворяет задаваемым требованиям. Она либо значительно больше 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)

%Заранее спасибо.
GinGreen
Забыл написать, что фильтр генерируется методом билинейного преобразования.
jorikdima
А почему встроенными функциями не воспользоваться?
GinGreen
Да проблема в том, что надо реализовать програмный генератор бих фильтров Чебышева.
GinGreen
Вот ещё кое что не ясное.
Если взять фильтр прототип Чебышева первого типа второго порядка и построить его АЧХ то она будет в два раза больше положенной.

Полюсы вычислены верно(по крайней мере, совпвдают с приведёнными в книге Д.В.Незлин "Основы цифровой обработки сигналов")

Ниже приводится матлабовский скрипт, который строит такую АЧХ

%
% фильтр - прототип нижних частот Чебышева первого рода
%второй порядок
%


FOrder = 2;% не изменять
DeltaP = 1 - 10 ^ (- 3 /20);%0.01;
DeltaS = 0.01;

%находим неравномерность
NUniformity = sqrt( 1 /((1 - DeltaP) ^ 2) - 1 )

%находим полюсы нижнечастотного прототипа
PoleRe0 = -sin(3* pi / (2 * FOrder) ) * sinh(1 / FOrder * asinh(1 / NUniformity))
PoleIm0 = cos( 3 * 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))

Modul = PoleRe0 ^ 2 + PoleIm0 ^ 2;


%Знаменатель - полином второй степени
Denom = [1 (-2 * PoleRe0) Modul]

%числитель - полином второй степени
Numen = [0 0 1]

w = 0: 0.1: 5; %задаём отрезок частот
h = freqs(Numen, Denom, w);% КЧХ

plot(w , abs(h)) % строим АЧХ
%%%
mdmitry
В MATLAB'е можно рассчитать параметры фильтра (системную функцию) используя прототип Чебышева, если задать следующие параметры:
1. частоты среза аналогового прототипа
2. неравномерность АЧХ в полосе пропускания
3. необходимое затухание на удвоенной частоте среза.
Сначала определяется порядок фильтра, далее его системная функция.
При синтезе по методу билинейного z-преобразования необходимо учесть связь между частотой аналогового прототипа и цифрового фильтра.

Это почти курсовой расчет по радиотехническим цепям и сигналам smile.gif

Цитата(mdmitry @ Dec 15 2006, 12:21) *
В MATLAB'е можно рассчитать параметры фильтра (системную функцию) используя прототип Чебышева, если задать следующие параметры:
1. частоты среза аналогового прототипа
2. неравномерность АЧХ в полосе пропускания
3. необходимое затухание на удвоенной частоте среза.
Сначала определяется порядок фильтра, далее его системная функция.
При синтезе по методу билинейного z-преобразования необходимо учесть связь между частотой аналогового прототипа и цифрового фильтра.

Это почти курсовой расчет по радиотехническим цепям и сигналам smile.gif

Виноват, забыл
4. частота дискретизации
Без нее не рассчитать частоту среза цифрового фильтра.
GinGreen
Цитата(mdmitry @ Dec 15 2006, 12:23) *
В MATLAB'е можно рассчитать параметры фильтра (системную функцию) используя прототип Чебышева, если задать следующие параметры:
1. частоты среза аналогового прототипа
2. неравномерность АЧХ в полосе пропускания
3. необходимое затухание на удвоенной частоте среза.
Сначала определяется порядок фильтра, далее его системная функция.
При синтезе по методу билинейного z-преобразования необходимо учесть связь между частотой аналогового прототипа и цифрового фильтра.

Это почти курсовой расчет по радиотехническим цепям и сигналам smile.gif

Цитата(mdmitry @ Dec 15 2006, 12:21) *

В MATLAB'е можно рассчитать параметры фильтра (системную функцию) используя прототип Чебышева, если задать следующие параметры:
1. частоты среза аналогового прототипа
2. неравномерность АЧХ в полосе пропускания
3. необходимое затухание на удвоенной частоте среза.
Сначала определяется порядок фильтра, далее его системная функция.
При синтезе по методу билинейного z-преобразования необходимо учесть связь между частотой аналогового прототипа и цифрового фильтра.

Это почти курсовой расчет по радиотехническим цепям и сигналам smile.gif

Виноват, забыл
4. частота дискретизации
Без нее не рассчитать частоту среза цифрового фильтра.


Я рад, что Вы нашли сходство с курсовой работой, но , к сожалению, Вы не ответили на мой вопрос.
На настоящий момент я уже перечитал массу литературы по синтезу БИХ фильтров, но проблему пока решить не смог. Если бы Вы , mdmitry, перекинули мне разработку к вашей курсовой, я былбы Вам благодарен.
mdmitry
Так надо код или совет? Если код, то какого уровня: идея или полный? Полный невозможно, так как задача неформализована, если нужен код для расчета порядка фильтра и системной функции по расчитанному порядку, то могу кинуть. Исходные данные уже обсуждались ранее (4).

Забыл дать ссылку:
http://www.kepstr.eltech.ru/tor/rtcs/
здесь материалы по курсу и есть методичка по синтезу цифровых фильтров на основе аналоговых прототипов.
http://www.kepstr.eltech.ru/tor/rtcs/rtcs_df.zip
Возможно, будет полезно.
GinGreen
Я нашёл, с чем была связана моя ошибка.И в приведённых листингах действительно отсутствует важный множитель. Спасибо всем кто принимал участие в обсуждении, и пытался помочь.

Тему можно закрывать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.