Можно задаться вопросом, почему каждый раз мы добавлям биты, чтобы избежать переполнения в подрезультатах, а затем “выбрасываем их”, чтобы вместить результат в указанное разрешение. Объяснение этого "парадокса" следующее - дополнительные биты нам нужны, чтобы поддержать точность при вычислениях, а фильтр имеет единичное усиление, при этом его выходные значения сигнала должны интерпретироваться как целые числа.
Для фильтров с единичным коэффициентом передачи коэффициенты фильтра (ai, bj) будут дробными числами, меньшими, чем единица. Таким образом, домножение при масштабировании просто добавляет биты, которые будут представлять дробные значения. Суммирование, однако, добавит биты, которые представляют более высокое значение. Но из-за единичного усиления фильтра, эти биты никогда не будут использоваться в результате: выход фильтра не получит абсолютную величину сигнала больше, чем величина сигнала на входе, что позволяет выходу быть представленным с тем же самым целочисленным диапазоном, как и вход.
Масштабирование вниз просто удаляет дробную часть результата, оставляя только целую часть с требуемой точностью (количеством бит). Ясно, что это также означает - точность уменьшается. Это важно для IIR-фильтров, так как у них есть обратная связь. Если эффект от потери точности здесь создает проблему, то потеря точности может быть уменьшена двумя способами:
- сделать усиление фильтра максимальным, при этом выход будет использовать весь доступный диапазон значений.
- увеличить одновременно и точность выхода и усиление фильтра.
Если применяется второй метод, то последний фактор может влиять на размер кода и пропускную способность, так как может потребоваться аккумулятор увеличенного размера.