ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
1031740 Топик полностью
Dingo (28.08.2020 05:52, просмотров: 689) ответил my504 на Это не ошибка. Это порог. Причем он при определенной ситуации может стать ловушкой, когда слишком малое входное значение не сможет уменьшить текущее значение фильтра. Решается фикспойнтом для значения фильтра. То есть нужно добавить справа к значению фильтра нужное число дробных разрядов и каждое новое входное значение левым сдвигом делать фикспойнтом. При выводе значения фильтра наружу восстанавливать целочисленную разрядность правым сдвигом.
Спасибо! Дельный совет. Тем более при умножении всё равно запас по разрядам должен быть. 

Повспоминал, я делал следующим образом, на примере первой операции умножения:

Yn = aX + (1-A)Yn-1

aX = X * numer / denum; [1]
V1 = X * numer;
V2 = V1 / denum;
ErrM1 = V1 - (V2 * denum) + ErrM1n-1 ;

Формулу [1] меняем на

aX = (X + ErrM1n-1) * numer / denum;

Если болтанка на уровне шума, то она будет усредняться. Если есть что-то из полезного, то оно накапливается.