Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Оконная функция с нужной АЧХ
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
ivan219
Как создать оконную функцию с нужной мне АЧХ???
Это экспериментально теоретический вопрос.
АЧХ нужна в виде параболы.
AndeyP
Методом наименьших квадратов: в частотной области берется сетка w_k на порядок "плотнее" чем окно, на ней задается целевая функция target_k, и решается переопределенная система, примерно такого вида:
target_k = sum_i(cos(i*w_k)*coeff_i)), где число заданных пар [target_k, w_k] на порядок больше числа искомых coeff_i. Необязательно брать равномерную сетку: например для обычного окна можно взять нулевую частоту и полосу подавления, игнорируя главный лепесток.
Если добавить веса для целевой функции, то этот метод можно существенно усилить, вплоть до того, что критерий минимизации квадратов ошибки (L-2) комбинируется с каким-то другим, например L-inf, как при Чебышевской интерполяции. Для последнего случая рабочий матлаб код можно взять из Mathias Lang, “Algorithms for the Constrained Design of Digital Filters with Arbitrary Magnitude and Phase Responses”.
soldat_shveyk
Оконная функция - это импульсная характеристика, длина которой равна размерности БПФ.
Задаем требуемую АЧХ, параболическую, например, в виде массива длиной БПФ, берем от нее обратный БПФ и получаем требуемую импульсную характеристику, или оконную функцию, как хотите.
В матлабе проделать этот фокус - две секунды sm.gif
ivan219
AndeyP спасибо но если не затруднит более по подробнее с матлабом не дружу. Желательно чистый алгоритм с разъяснением.
soldat_shveyk проделал такое но результат скорее похож на ИХ КИХ фильтра чем на оконные функции.
soldat_shveyk
Цитата
проделал такое но результат скорее похож на ИХ КИХ фильтра чем на оконные функции.


Это вопрос понимания.
Оконная функция и импульсная характеристика это одно и то же.
Гребенки фильтров на основе БПФ основаны как раз на том, что вместо привычной всем оконной функции Ханна или Блэкмана ставится ИХ КИХ-фильтра.
Просто в книгах по ЦОС, особенно в рускоязычных, запудрили всем голову что оконная функция - это нечто особенное sm.gif

AndeyP
soldat_shveyk прав в том что поскольку АЧХ окна является приближением к дельта-функции, то окно можно рассматривать и рассчитывать как НЧ КИХ фильтр, который подавляет все частоты кроме постоянной составляющей. Вот только если бы можно было в частотной области нарисовать произвольный отклик, то вообще не надо было бы париться с книгами по ЦОС. Как правило, удается получить только приближение к желаемому отклику. При использовании МНК для этого составляется система уравнений A X = Y, где X – вектор искомых коэффициентов окна во временной области, А – матрица с N столбцами и M строками. N = длина окна, M выбирается примерно на порядок больше N.

Каждая строка матрицы А вычисляет частотный отклик на одной из M заданных частот. Иными словами, она переводит вектор X из временной области в частотную. Поскольку искомое окно X обладает четной симметрией, можно ограничиться только косинусами, в этом случае желаемый отклик Y определяется действительными числами.
Элемент матрицы А на пересечении строки r и столбца c зависит только от нужной частоты, и равен cos((c+0.5*N) * freq[r]); где частота строки freq[r] задается в радианах. Например, при равномерной сетке freq[r] = PI*r/M (здесь используется симметрия в частотной области – в уравнениях участвуют только положительные частоты). В принципе можно также использовать симметрию окна во временной области, но в этом случае четные и нечетные N будут обрабатываться немного по разному, проще считать все окно, сдвинутое так, чтобы середина приходилась на 0, для чего добавляем (+0.5*N).

Если какая-то частота более «важна» чем другие, каждый элемент строки, соответствующей этой частоте, и соответствующий отклик Y[r] умножаются на соответствующий «важности» вес > 1.

Система решается стандартными численными методами, в результате получается вектор X, с частотным откликом, максимально близким к заданному Y в смысле наименьших квадратов. Если полученный отклик не удовлетворяет каким-то дополнительным ограничениям, можно повторить всю процедуру, увеличив вес тех частот, на которых отклик выходит за ограничения.

По возможности, систему лучше решать через ортогональные преобразования: при увеличении уровня подавления обусловленность системы может ухудшиться. В качестве грубой прикидки могу сказать что даблов хватает на 60-90 дБ при использовании нормальных уравнений и больше 150 дБ при QR преобразовании.
soldat_shveyk
Цитата
Вот только если бы можно было в частотной области нарисовать произвольный отклик, то вообще не надо было бы париться с книгами по ЦОС. Как правило, удается получить только приближение к желаемому отклику.


Совершенно справедливо заметили.
Если нарисовать АЧХ идеального прямоугольного фильтра, и взять от него обратное ДПФ конечной длины, то получившаяся импульсная характеристика не даст идеально прямоугольной АЧХ.
Чтобы это получить нужно бесконечное количество точек ДПФ. Природу не обманешь. Чем "круче" изогнем функцию в частотной области, тем большую дину получим во временной области.
ivan219
Спасибо.
Боле мене понятно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.