[an error occurred while processing this directive]
|
Я думаю, что Вы используете Си. А там следующие вещи происходят.
пусть у Вас звено типа 1(1-aZ(-1)), a = 1-2^(-10).
Это, во-первых, сразу ограничевает Ваш диапазон на 10 бит. Остается только 5. Очень вероятно переполнение. Потому как Си НЕ ИСПОЛЬЗУЕТ 40-разрядный аккумулятор (в смысле использует, но тебе это сугубо фиолетово). Плюс попробуй домножить сигнал из девяти и менее значищих бит на данное а. Что получится? Да ничего! Умножения не получится. Сигнал останится без изменения. Не будет у Вас в этот момент фильтрации...
Что делать?
-предварительно сдвигаешь сигнал на 10 бит влево (масштабируешь)
-теперь фильтрация начинает работать с 1 значащего бита сигнала.
-в процессе фильтрации у тебя может добавиться еще 11 бит (не помню точно формулу суммы геометрической прогрессии - или 10).
-итого 10 + 16 + 11 = 37 бит. Т.е еще на три можно подвинуть.
-результат двигаете обратно.
Все. Обобщайте на свой случай.
E-mail: info@telesys.ru