2012-04-29 3 views
0

У меня есть список двойников в диапазоне где-то между -1.396655 до 1.74707 может даже быть выше или ниже, так или иначе, я знал бы, что Min и Max значение до нормализации. Мой вопрос Как можно нормализовать эти значения между -1 к 1 или даже еще лучше преобразовать их из двойных значений обугливается значения 0 к 255нормализации список двойников в диапазоне от -1 до 1 или 0 - 255

Любая помощь будет оценена.

double range = (double)(max - min); 
value = 255 * (value - min)/range 
+1

Вы можете найти [Как нормализовать список значений int] (http://stackoverflow.com/q/1226587/1048330). – tenorsax

+1

Извините, что я noob, и мне нужна помощь время от времени :(мои первые пустые голоса ... Заставляет меня чувствовать себя мусором. Иногда, когда вы пытаетесь что-то сделать, вы ищете высоко и низко и не можете найти что-либо или если вы это сделаете вы просто не можете это понять, поэтому я думаю об этом великом сообществе, и я знаю, что кто-то дружелюбный попытается помочь мне и понять. – Elgoog

ответ

2

Проще всего перенести все значения так, чтобы min равно 0, вычитая Min из каждого числа. Затем умножьте на 255/(Max-Min), так что сдвинутый Макс будет отображаться на 255, а все остальное будет масштабироваться линейно. Поэтому я считаю, ваше уравнение будет выглядеть следующим образом:

newval = (unsigned char) ((oldval - Min)*(255/(Max-Min)))

Вы можете более тщательно округлить немного перед заливкой на символ.

4

Вам нужен mapping формы y = mx + c, и вы должны найти m и c. У вас есть два фиксированных данных-точек, т.е .:

1 = m * max + c 
-1 = m * min + c 

Оттуда, это simple algebra.

Смежные вопросы