реклама на сайте
подробности

 
 
> Перевод в дециБеллы, в контроллере в реальном времени
Dmitron
сообщение Apr 19 2005, 11:13
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 627
Регистрация: 24-03-05
Из: Севастополь
Пользователь №: 3 655



В 16-битном контроллере есть 12-битное АЦП, необходимо значения АЦП перевести в дБ, Причём искомая величина х=10*log(100*отсчёты АЦП/4095), либо х=10*ln(100*отсчёты АЦП/4095). Сложность заключается в том, что рассчёты необходимо производить максимально быстро в реальном времени, желательно не выходя за размер 2 байт. Что можете порекомендовать?


--------------------
Решаю любые проблемы кроме своих
(dmitron1036()mail.ru)
http://uselect-el.ucoz.com
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
s_yakov
сообщение Apr 19 2005, 11:43
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 464
Регистрация: 20-10-04
Пользователь №: 924



Цитата(Dmitron @ Apr 19 2005, 14:13)
В 16-битном контроллере есть 12-битное АЦП, необходимо значения АЦП перевести в дБ, Причём искомая величина х=10*log(100*отсчёты АЦП/4095), либо х=10*ln(100*отсчёты АЦП/4095). Сложность заключается в том, что рассчёты необходимо производить максимально быстро в реальном времени, желательно не выходя за размер 2 байт.  Что можете порекомендовать?
*

Таблицу.
Go to the top of the page
 
+Quote Post
Dmitron
сообщение Apr 19 2005, 13:56
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 627
Регистрация: 24-03-05
Из: Севастополь
Пользователь №: 3 655



а формулой слабо? 12 кБайт под ногами не валяется.


--------------------
Решаю любые проблемы кроме своих
(dmitron1036()mail.ru)
http://uselect-el.ucoz.com
Go to the top of the page
 
+Quote Post
vvs157
сообщение Apr 19 2005, 15:04
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(Dmitron @ Apr 19 2005, 16:56)
а формулой слабо? 12 кБайт под ногами не валяется.
*


Формулой и 2 байт и логарифм? А контроллер какой?
Go to the top of the page
 
+Quote Post
fontp
сообщение Apr 20 2005, 08:34
Сообщение #5


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(vvs157 @ Apr 19 2005, 18:04)
Цитата(Dmitron @ Apr 19 2005, 16:56)
а формулой слабо? 12 кБайт под ногами не валяется.
*


Формулой и 2 байт и логарифм? А контроллер какой?
*



можно и формулой LogRatio = 10*log(Ey/Ex)

int LogRatio(int Exx, int Eyy)
{
int i, j;
int i1, i2, v1, v2;
// != 0
i1 = norm_l(Eyy+1);
i2 = norm_l(Exx+1);

j = i1 - i2;
v1 = L_shl(Eyy, i1);
v2 = L_shl(Exx, i2);
v1 = (v2-v1+(1<<12))>>13;
j = 3*j + (((v1>>1) + v1 + 0x02a3*j +(1<<15))>>16);
return j;
}

Вычисления здесь 32-разрядные, используется библиотека ETSI (можно найти внутри референсного кода любого вокодера, для DSP - norm_l и L_shl - 32 разрядные операции выполняемые одной инструкцией), максимальная ошибка 1 дб в диапазоне -40 - + 40 дб.

Но проще таблицей + интерполяцией. Хотя таблица + интерполяция при больших отношениях развалится и всё равно что-то нужно делать с двоичной экспонентой.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016