Neuroware
@Neuroware
Программист в свободное от работы время

Как увеличить дисперсию ряда (массива чисел)?

Суть задачи в следующем, есть массив чисел (скажем 70 элементов), все типа byte (от 0 до 255), проблема в том что данные отличаются недостаточно сильно, то есть к примеру минимальное 1, максимальное 20 (но может быть и 255 в конкретном случае), хотелось бы увеличить "контрастность" чисел так чтобы максимальное осталось таким как было (не увеличилось) а остальные изменились, маленькие стали еще меньше средние уменьшились, но не слишком сильно, чтобы это было равномерно. Пытался сообразить какие манипуляции с этими данными, чтобы такое провернуть, но не могу математически сформулировать, тут скорее всего нужно применить тригонометрические функции, но с ней у меня плоховато) В гуглах ничего похожего не встретил, если кто знаком или хорошо в этом разбирается, есть идеи как можно массив обработать?
  • Вопрос задан
  • 2517 просмотров
Решения вопроса 1
kindofbear
@kindofbear
Веб-разработчик
Не углубляясь в математическую сторону вопроса, первое же решение, приходящее в голову — построить карту для элементов массива, чем меньше элемент, тем выше индекс для него в этой карте, тем сильнее последующее изменение этого элемента.

Топорно, быстро, просто
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
donkaban
@donkaban
Умею рисовать тени
Увеличение динамического диапазона. Ищем min/max в массиве Приводим все числа из диапазона [min...max] в диапазон [0..max] (или, если нужен максимальный размах в [0..0xFF]), ну нормализуем то есть.

И при чем тут тригонометрия, кстати?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы