#c
#c
Вопрос:
Как преобразовать бД в линейную, используя только целые числа? Допустимы приблизительные решения.
Уточнение: Преобразование dB в линейный получается по формуле P = 10*log10(P_dB) Обратное получается по формуле: P_dB = 10^(P/10)
При программировании на C для этого требуются операции с плавающей запятой.
Диапазон P_dB ограничен и составляет от -50 до 50, тип-целое число.
Существует ли приемлемый метод получения этих преобразований только с использованием целочисленных операций?
Комментарии:
1. дб, как в децибелах ? вы пробовали/исследовали что-нибудь ?
2. Пожалуйста, перечислите решения, которые вы уже исследовали и отвергли, чтобы нам не пришлось возвращаться к тому, что вы уже рассмотрели.
3. Покажите свой расчет с плавающей запятой. Также опишите полный диапазон входных и выходных значений, с которыми вы работаете.
4. Не могли бы вы подробнее рассказать, с чем конкретно у вас возникли проблемы? Вы не уверены, как преобразовать измерение в дБ в представленную величину? Или вы знаете, какое преобразование вы хотите выполнить и как, но не уверены, как это сделать без использования операций с плавающей запятой? Или что-то совсем другое?
5. Кроме того, вы используете C или C ? Это два разных языка с различными доступными математическими утилитами.
Ответ №1:
Плюс становится умножением, минус делением. пример:
10dB ~ 10 3db ~ 2
57dB = 10 10 10 10 10 10 - 3 10*10*10*10*10*10/2 = 500000;
Вам не нужны никакие поплавки.
Комментарии:
1. Разве это
1.5
не поплавок в последнем примере?2. Ненужный
3. @JeremyFriesner Действительно