Кто-нибудь знает, как вычислить ошибку квантования от 16 бит до 8 бит?Как вычислить ошибку квантования от 16 бит до 8 бит?
Я просмотрел статью Википедии о Quantization, но это не объясняет это.
Может ли кто-нибудь объяснить, как это делается?
Много любви, Луиз
Update: Моя функция выглядит следующим образом.
unsigned char quantize(double d, double max) {
return (unsigned char)((d/max) * 255.0);
}
Я думаю, что ваша функция близка. Он может использовать некоторую проверку ошибок - например, max лучше не равен нулю, оба значения, вероятно, должны быть положительными. Я бы предложил, чтобы его тестирование было на 100% уверенным. Когда вы ожидаете, что выход будет равен нулю? Когда 255? –
Двойной не 16 бит ... –
Похоже, что max является максимальным значением образца 'd'. Код не применяет его, хотя -d может принимать очень малые отрицательные значения или очень большие положительные значения, что приводит к выходу, который не находится в диапазоне 0-255 (что кажется намеренным.) Также, что такое вывод данные должны быть? Неподписанные звуковые сэмплы, расположенные вокруг 128? Любые отрицательные значения приведут к тому, что диапазон возврата будет [-255, 255], что, вероятно, не соответствует вашим потребностям. –