Линейной интерполяцией по таблице
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
-mse-
17 июня 2005 г. 13:47
В ответ на:
Как вычислить в МК логарифм по основанию 2, от числа в диапазоне 1,000,,,,2,000? С точностью до одного знака после запятой?
отправлено =NIK= 17 июня 2005 г. 13:44
Составить ответ
|||
Конференция
|||
Архив
Ответы
Я пробовал сделать апроксимацию прямыми линиями, и делать расчет на разных интервалах по разным линиям, но что-то громоздко получается :(
—
=NIK=
(17.06.2005 14:06
80.72.116.68
,
пустое
)
нах? Интервалы должны быть одинаковыми. Кол-во кратно степени 2, так избавишься от деления.
—
-mse-
(17.06.2005 14:23
81.201.65.235
,
пустое
)
Как и от разных линий :) Это получится аккурат то, что я описал.
—
SM
(17.06.2005 14:28
213.141.159.26
,
пустое
)
Кстати, на первый взгляд...
—
-mse-
(17.06.2005 15:24
81.201.65.235
, 110 байт)
Ага, именно линейной она получается. Но во многих случаях (+)
—
SM
(17.06.2005 16:55
195.225.131.183
, 119 байт)
Ну, для уха, оно, конечно. А вот для глаза, типа, калькулятора, плохо. ;О)
—
-mse-
(17.06.2005 17:07
81.201.65.235
, 85 байт)
Дык штука-то в том, что (+)
—
SM
(17.06.2005 19:44
213.141.159.26
, 125 байт)
Да это-то понятно, только погрешность... Смотреть на "-35,5дБ±1(2...)дБ", например, не по-пацански ;О)
—
mse
(17.06.2005 23:19
213.132.70.166
,
пустое
)
Только сначала экспоненту, которая есть (+)
—
SM
(17.06.2005 13:48
213.141.159.26
, 73 байт)
ну чловек же пишет 1,000-2,000, значит всё, экспонента выжата. ;О)
—
-mse-
(17.06.2005 14:06
81.201.65.235
,
пустое
)
Неа, 1000 это меньше 1024 :) А 2000 больше. Значит там один бит имеецца.
—
SM
(17.06.2005 14:11
213.141.159.26
,
пустое
)
Ну, меня в школе учили, что 1,000-2,000 это, типа, от "1" до "2". Причём уже в плывучке. ;О) Мож мужык чего другое имел в виду? Ну, дык, каков вопрос - таков ответ.
—
-mse-
(17.06.2005 14:28
81.201.65.235
,
пустое
)
Ай. Запятую я просто воспринимаю как разделитель разрядов, а не десятичную '.' :)
—
SM
(17.06.2005 14:29
213.141.159.26
,
пустое
)
Я имел ввиду что 1,000-2,000 это в десятичном виде т.е. выходные данные будут в диапазоне от 0,0-1,0. Ну если входные данные будут домноженны на 100 и точность убавить, то хватит 8 бит. Т.е. входные данные от 100(в десятичном 1,00)-200 (в десятичном 2,00)
—
=NIK=
(17.06.2005 14:45
80.72.114.189
,
пустое
)
тогда уж на 128 домножайте, и никакой экспоненты не понадобится.
—
SM
(17.06.2005 14:47
213.141.159.26
,
пустое
)
Ну а так как (+)
—
SM
(17.06.2005 14:50
213.141.159.26
, 247 байт)
Спасибо, попробую
—
=NIK=
(17.06.2005 14:55
80.72.115.200
,
пустое
)
Прошу прощения за тупость. И как тогда будет выглядеть алгоритм?
—
=NIK=
(17.06.2005 14:48
80.72.114.189
,
пустое
)
Причем на вскидку вполне достаточно (+)
—
SM
(17.06.2005 13:50
213.141.159.26
, 123 байт)
К сожалению в математике я не силен :( Надо было учить матчасть! Где можно почитать про этот медод? Чтобы на одном языке с вами разговаривать. Можно ли без чисел с плавующей запятой обойтись?
—
=NIK=
(17.06.2005 13:56
80.72.116.22
,
пустое
)
А я и не говорю про числа с плавающей точкой, как и про дебри математики (+)
—
SM
(17.06.2005 14:10
213.141.159.26
, 890 байт)
Только ашипся немного (+)
—
SM
(17.06.2005 14:15
213.141.159.26
, 106 байт)
Спасибо. Попробую поэкспериментировать.
—
=NIK=
(17.06.2005 14:23
80.72.115.14
,
пустое
)
Хм. Если, конечно, целочисленное значение на входе.
—
SM
(17.06.2005 13:49
213.141.159.26
,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru