ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
639548 Топик полностью
мимокрокодил (19.12.2015 13:02, просмотров: 1) ответил misyachniy на "Кто виноват?" понятно, а второй извечный вопрос?
Можно сохранять младшие биты в аккумуляторе Т.е. держать в памяти не y, а y*256. static int32_t acc; acc += x - ((acc + 128) >> 8); // На каждом новом сэмпле result = (acc + 128) >> 8; // Когда надо получить результат Лучше хранить не 8 младших бит, а больше - главное, чтобы не случилось переполнения. Если динамический диапазон достаточно узок, сделать точнее, чем флоат, вообще не проблема: там всего 24 значащих бита. Формулы: y1 = (1 - a)*y0 + a*x y1 = [(N - a*N)*y0 + a*N*x] / N N*y1 = N*y0 - a*N*y0 + a*N*x Подставляем N = 256 и a = 1/256, получаем то, что приведено выше.