реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Помогите с БИХ фильтром Чебышева, проблема с БИХ фильтром нижних частот Чебышева первого рода
GinGreen
сообщение Dec 9 2006, 18:56
Сообщение #1





Группа: Новичок
Сообщений: 12
Регистрация: 9-12-06
Пользователь №: 23 333



Здравствуйте.
Помогите с БИХ фильтром Чебышева. Никак не могу сообразить, в чём дело.

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

%Заранее спасибо.
Go to the top of the page
 
+Quote Post
GinGreen
сообщение Dec 9 2006, 20:01
Сообщение #2





Группа: Новичок
Сообщений: 12
Регистрация: 9-12-06
Пользователь №: 23 333



Забыл написать, что фильтр генерируется методом билинейного преобразования.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Dec 9 2006, 22:01
Сообщение #3


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



А почему встроенными функциями не воспользоваться?
Go to the top of the page
 
+Quote Post
GinGreen
сообщение Dec 10 2006, 21:43
Сообщение #4





Группа: Новичок
Сообщений: 12
Регистрация: 9-12-06
Пользователь №: 23 333



Да проблема в том, что надо реализовать програмный генератор бих фильтров Чебышева.
Go to the top of the page
 
+Quote Post
GinGreen
сообщение Dec 13 2006, 12:19
Сообщение #5





Группа: Новичок
Сообщений: 12
Регистрация: 9-12-06
Пользователь №: 23 333



Вот ещё кое что не ясное.
Если взять фильтр прототип Чебышева первого типа второго порядка и построить его АЧХ то она будет в два раза больше положенной.

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

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

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


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)) % строим АЧХ
%%%

Сообщение отредактировал GinGreen - Dec 13 2006, 12:20
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Dec 15 2006, 12:23
Сообщение #6


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



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

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

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

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

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


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
GinGreen
сообщение Dec 23 2006, 11:59
Сообщение #7





Группа: Новичок
Сообщений: 12
Регистрация: 9-12-06
Пользователь №: 23 333



Цитата(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, перекинули мне разработку к вашей курсовой, я былбы Вам благодарен.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Dec 24 2006, 21:26
Сообщение #8


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



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

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


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
GinGreen
сообщение Dec 27 2006, 11:49
Сообщение #9





Группа: Новичок
Сообщений: 12
Регистрация: 9-12-06
Пользователь №: 23 333



Я нашёл, с чем была связана моя ошибка.И в приведённых листингах действительно отсутствует важный множитель. Спасибо всем кто принимал участие в обсуждении, и пытался помочь.

Тему можно закрывать.

Сообщение отредактировал GinGreen - Dec 27 2006, 11:50
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th July 2025 - 13:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01448 секунд с 7
ELECTRONIX ©2004-2016