Эффективная нормализация массива приближенных значений - PullRequest
0 голосов
/ 04 сентября 2010

Я ищу эффективный способ замены приблизительных значений (ushort [100]) на их целевые значения.

Существует два целевых значения (ushort x, 2x), каждое из которых находится в ushort [] приближается к одному из этих двух.

Ответы [ 3 ]

1 голос
/ 04 сентября 2010

Вы всегда можете просто определить метрику расстояния, которая позволит вам назначить каждое из приближенных значений ожидаемым значениям, считая их «бинами», как в гистограмме. Обработка значений означает замену приближенного значения известным значением, которое имеет наименьшее расстояние до этого значения.

1 голос
/ 04 сентября 2010
  • создать отсортированный массив с ожидаемыми значениями
  • для каждого приближения, двоичный поиск ближайшего ожидаемого
  • заменить
0 голосов
/ 06 сентября 2010
var a = target1 > words[i] ? target1 - words[i] : words[i] - target1;
var b = target2 > words[i] ? target2 - words[i] : words[i] - target2;
(OR)
var as = target1 - words[i];
var bs = target2 - words[i];
a = as + (as >> 31) ^ (as >> 31);
b = bs + (bs >> 31) ^ (bs >> 31);

if (a < b)
   normalized[i] = target1;
else
   normalized[i] = target2;
...