Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Нижнее насыщение gains IIRов в fixed point
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Саша Z
У меня в системе банка фильтров есть 15 коротких IIRов (второго порядка), transfer function каждого содержит в числителе только число (скажем gain). В алгоритме динамически играюсь IIR gain factors т.е. варьирую это gainы (не суть важно как именно - это - определяется в алгоритме), т.е. на каждом определенном этапе алгоритм вырабатывает 15 gain factors которые являются числителями каждого соотв. IIRа.
В Матлабе работает нормально, перевожу в имплементацию (16 бит fixed point). Грубо конвертирую полученные в Матлабе gain factors в 16 бит fixed point:

gain = int16(round(1024*gain)), получаю целочисленные факторы в 16-битном размере.

В оригинале (из Матлаба) все факторы меньше 1 (в диапазоне 0 - 1) и могут отличаться более чем на 3 порядка. Это приводит к тому что когда фактор меньше скажем 0.0005 - в результате вышеуказанной операции получаю 0, что фактически обнуляет конкретный фильтр.

Посему видимо нужна какая-то защита от обнуления когда реальный коеффициент ниже порога квантизации. Можно например вместо round использовать celing:

gain = int16(ceiling(1024*gain)), но тогда уравниваются например факторы в 2х смежных диапазонах (например все между 0.0001 и 0.001 идет в 1), что полуается весьма грубо.

Единственый вариант более правдоподобного разпределения после квантизации вижу в квантизации на большую разрядность, например 2^15:

gain = int16(round(2^15*gain)), но в таком случае мне кажется увеличивается вероятность переполнения промеж. результатов в процессе IIR фильтрации...


Что посоветуете ?
Misa
Если правильно построить алгоритм вычисления, то никаких переполненй не будет, и это не зависит от колличества разрядов gain factor. В вашем случае можно использовать и 2^15 и 2^31 ( что будет еще точнее ).
Для 2^15 gain factor шаг его квантования = 1/32767.
Для 2^31 gain factor шаг его квантования = 1/2147483648.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.