Страница 5 из 7

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

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

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

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

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

Добавлено: 09 дек 2011, 16:21
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

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

верно ли?

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

Добавлено: 10 дек 2011, 09:26
Бахурин Сергей
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)))

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

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

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

Изображение

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

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

Добавлено: 10 дек 2011, 17:29
ivan219
Вот эта строчка мне не понятна.

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

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

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

grath+=x*i

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

Добавлено: 10 дек 2011, 20:03
Бахурин Сергей
ivan219 писал(а):Вот эта строчка мне не понятна.

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

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

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

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

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

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

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

Добавлено: 17 янв 2012, 19:21
eiyawii
1. что такое *бин*? (как пересчитать в бинах)

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

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

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

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

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