общие вопросы по ЦФ

Все что касается фильтрации
eiyawii
Сообщения: 60
Зарегистрирован: 20 окт 2011, 07:38

Re: общие вопросы по ЦФ

Сообщение eiyawii »

ivan219 писал(а):Интересно какого порядка у вас вышел этот фильтр?
40 коэффициентов, можно построить и с 15-20, но тогда полоса среза получается узкая.
ivan219 писал(а):Вот это я не понял.
Почему нельзя?
потому что dF(w)/dw в таком случае равна нулю и это означает, что у фильтра задержка равна нулю, чего быть не может - сразу после подачи на вход системы воздействия, система сразу выдает выходной сигнал, импоссибл.

Ivan Karamazov
Сообщения: 89
Зарегистрирован: 28 окт 2010, 22:31
Откуда: Москва

Re: общие вопросы по ЦФ

Сообщение Ivan Karamazov »

Немножко вбок от темы. Возможно я не прав (я не знаю задачи, где 300 дБ плохо, а 500 дБ -- много лучше), НО у меня достаточно фантазии (и/или, к сожалению, опыта), чтобы представить себе, что отдельно взятый человек может таковую задачу себе поставить. Хочу отметить только то, что с вероятностью, близкой к 1, человеку, таковую таску решившему, сразу-после потребуется 1000+ дБ, соответственно GMP/MFPR со всеми u*nix'ами и т.д. и т.п. -- в общем, занятий может хватить лет на несколько (хорошо, если <10, потому как число потребных дБ имеет свойство расти в развитием выч. технологий); главное -- с конечным сухим остатком в виде понимания несовершенности мифа о том, что неограниченно наращивая разрядность (>>>сверх типовых нормативов) можно получить нечто качественно большее, чем оно можно на самом деле -- а это очень опасно для, вообще говоря, жизни (если не вообще, то как инженера); хотя, конечно, всякое бывает.
Т.е. здесь, кажется, лежат грабли, на которые в разных ипостасях разные люди при мне наступали, мягко говоря, неоднократно.
(Когда ветка начиналась, я подумал, что 500 дБ -- "в полемическом задоре", но по мере развития вижу полное дежавю.)
Развивать этот тезис не буду, просьба не отвечать, изв. за философию, но очень Прошу принять к сведению
Если ваши решения вам нравятся -- это хорошие решения. И наоборот.

eiyawii
Сообщения: 60
Зарегистрирован: 20 окт 2011, 07:38

Re: общие вопросы по ЦФ

Сообщение eiyawii »

согласно википедии , то есть ФЧХ можно построить как


код такой:

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

x=arange(0,2*pi,0.0001)
grath=0
for i in range(0,len(h)):
	grath+=arctan(abs(h[i]*sin(x*i))/abs(h[i]*(cos(x*i))))
h - коэффициенты фильтра, grath - функция ФЧХ, i - индекс коэффициента, х - частота от 0 до 2*pi

На выходе получил такой график:
Изображение

верно ли?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: общие вопросы по ЦФ

Сообщение Бахурин Сергей »

eiyawii писал(а): верно ли?
не совсем думаю верно если так (без модулей):

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

x=arange(0,2*pi,0.0001)
grath=0
for i in range(0,len(h)):
   grath+=arctan((h[i]*sin(x*i))/(h[i]*cos(x*i)))

eiyawii
Сообщения: 60
Зарегистрирован: 20 окт 2011, 07:38

Re: общие вопросы по ЦФ

Сообщение eiyawii »

Бахурин Сергей писал(а):не совсем думаю верно если так (без модулей):
картинка построена с модулями, но странновата для КИХ-фильтра.

вот ФЧХ и АЧХ(50 коэффициентов, уровень боковых лепестков около -250 дБ):
Изображение

Изображение

причем боковые лепестки как в учебнике, а вот при уменьшении уровня боковых лепестков начинают превращаться в лапшу и это дело происходит примерно на уровне -300дБ, причем количество знаков после запятой 15 или 16 знаков, что соответствует 10е-15. Вот поэтому у меня и было предположение, что осыпаться АЧХ начинает именно из-за недостаточной точности вычислений.

ivan219
Сообщения: 61
Зарегистрирован: 09 май 2011, 16:39

Re: общие вопросы по ЦФ

Сообщение ivan219 »

Вот эта строчка мне не понятна.

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

grath+=arctan((h[i]*sin(x*i))/(h[i]*cos(x*i)))
Если всё привести то получается вот это

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

grath+=x*i

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: общие вопросы по ЦФ

Сообщение Бахурин Сергей »

ivan219 писал(а):Вот эта строчка мне не понятна.

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

grath+=arctan((h[i]*sin(x*i))/(h[i]*cos(x*i)))
Если всё привести то получается вот это

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

grath+=x*i
Да правильно сначала надо накопить потом арктангенс вычислять.
eiyawii писал(а):Вот поэтому у меня и было предположение, что осыпаться АЧХ начинает именно из-за недостаточной точности вычислений.
Думаю что ваше предположение верно.

Ivan Karamazov
Сообщения: 89
Зарегистрирован: 28 окт 2010, 22:31
Откуда: Москва

Re: общие вопросы по ЦФ

Сообщение Ivan Karamazov »

причем боковые лепестки как в учебнике, а вот при уменьшении уровня боковых лепестков начинают превращаться в лапшу и это дело происходит примерно на уровне -300дБ, причем количество знаков после запятой 15 или 16 знаков, что соответствует 10е-15. Вот поэтому у меня и было предположение, что осыпаться АЧХ начинает именно из-за недостаточной точности вычислений.
ну, я ленив, чтобы это повторить, но -- мой опыт показывает, что когда потребные подавления достигают хотя бы 90-100 дБ, посередине вычислений образуются (могут образоваться) числа типа NaN (реже +-Inf), ЧТО НЕ ВЫЗЫВАЕТ вылета проги (во всех известных мне RTL исключения от FPU/SIMD по умолчанию замаскированы) -- боле того, оно во многих аспектах продолжает выдавать "как в учебнике". (Напомню, что NaN / Inf == исчезновение порядка/переполнение означает, что результат операции не несет ни одной значащей цифры.)
Смотрите внимательно -- (по моим представлениям) здесь может не хватать не только мантиссы (53 бита), но даже и порядка -- смотрите (типа, поставьте исключения на FPU или что-то вроде).
Если ваши решения вам нравятся -- это хорошие решения. И наоборот.

eiyawii
Сообщения: 60
Зарегистрирован: 20 окт 2011, 07:38

Re: общие вопросы по ЦФ

Сообщение eiyawii »

1. что такое *бин*? (как пересчитать в бинах)

2. как увеличить точность расчета коэффициентов фильтра и точность построения АЧХ? (30 значащих десятичных цифр после запятой)

3. есть ли хороший способ минимизации ошибки вычисления коэффициетов при рекурсивном расчете?

4. где можно посмотреть частоту среза главного лепестка оконных функций? ()

ivan219
Сообщения: 61
Зарегистрирован: 09 май 2011, 16:39

Re: общие вопросы по ЦФ

Сообщение ivan219 »

1 Бин это один спектральный отсчёт в ДПФ
2 Это вас разговоры про нано так торкнули :) 30 значащих цифр после запятой это вы представляете насколько малая величина? Это если в дБ то получается где то -600 дБ
3 Не понятно. Используйте более точную математику.
4 То же не понятно. Если вам нужна ширина лепестка по уровню 3 дБ то в описании на оконную функцию этот параметр есть. Смотрите на этом сайте.

Ответить