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

 
 
> Поиск формулы для нахождения индекса элемента массива, Нужна помощь математика)
Sprite
сообщение Apr 4 2018, 14:26
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 173
Регистрация: 11-05-08
Пользователь №: 37 414



Доброго всем времени суток!

Есть таблица элементов (скажем частот), в котором каждое последующее значение отличается от предыдущего на 1%, например:
Код
10000
10100
10201
10303,01
10406,0401
10510,1005
10615,20151
10721,35352
и т.д.


и есть текущее значение частоты, например 10354.

Нужно частотам (как бы это по русски выразиться wacko.gif ) присвоить "индексы", например: если текущее значение лежит в диапазоне от 10000 до 10099 - то индекс = 0, при текущем значении в диапазоне от 10100 до 10200 - индекс = 1, при значении = 10477 индекс = 4 и т.д.
Самое тривиальное что приходит в голову - это проход по всей таблице и банальное сравнение, но этот вариант не подходит - слишком много времени тратится. Можно ли нахождение индекса представить в виде формулы?

Прошу прощения если вопрос не в тему и не по адресу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
twix
сообщение Apr 4 2018, 14:49
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 4-11-15
Пользователь №: 89 174



Внимание вопрос, простое сравнение значит долго будет вычисляться, а логарифм при помощи рядов и деление быстро.
Автору полагаю лучше использовать деление и вычитание. Самая дорогая операция деление на 100.
10723 - 10000 = 723 /100 = 7
Если в микроконтроллере здесь быстрая процедура деления на 10 http://forum.easyelectronics.ru/viewtopic....f=4&t=13470

Сообщение отредактировал twix - Apr 4 2018, 14:52
Go to the top of the page
 
+Quote Post
Sprite
сообщение Apr 4 2018, 15:02
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 173
Регистрация: 11-05-08
Пользователь №: 37 414



Цитата(twix @ Apr 4 2018, 21:49) *
Внимание вопрос, простое сравнение значит долго будет вычисляться, а логарифм при помощи рядов и деление быстро.
Автору полагаю лучше использовать деление и вычитание. Самая дорогая операция деление на 100.
10723 - 10000 = 723 /100 = 7
Если в микроконтроллере здесь быстрая процедура деления на 10 http://forum.easyelectronics.ru/viewtopic....f=4&t=13470

Спасибо большое, дружищще! 08.gif Микроконтроллер stm, операция деления и вычитания в сравнении с проходом по всему массиву ничто! Тему можно считать закрытой.
Go to the top of the page
 
+Quote Post
megajohn
сообщение Apr 5 2018, 09:01
Сообщение #4


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

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(Sprite @ Apr 4 2018, 18:02) *
в сравнении с проходом по всему массиву ничто! Тему можно считать закрытой.


забыли про метод половинного деления ( или как правильно называется ? )


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 08:35
Рейтинг@Mail.ru


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