Что лучший способ состоит в том, чтобы вычислить 3D (или n-D) центроид?

Вы должны вызывать Матчи вместо Матча.

Пример:

string sentence = "\"This is the end?\"";
var matches = Regex.Matches(sentence, "[\"?]");
var punctuationLocations = string.Empty;
foreach(Match match in matches)
{
    punctuationLocations += match.Value + " at index:" + match.Index + Environment.NewLine;
}

// punctuationLocations:
//   " at index:0
//   ? at index:16
//   " at index:17
20
задан Marcel Levy 16 September 2008 в 22:28
поделиться

7 ответов

Нет, который является единственной формулой для центроида набора точек. Посмотрите Википедию: http://en.wikipedia.org/wiki/Centroid

12
ответ дан 30 November 2019 в 00:05
поделиться

Вы неопределенно упоминаете "способ получить более точный центроид". Возможно, Вы говорите о центроиде, который не затронут выбросами. Например, среднее число доход семьи в США, вероятно, очень высок, потому что небольшое количество очень богатые люди скашивает среднее число; они - "выбросы". По этой причине статистики используют медиана вместо этого. Один способ получить медиану состоит в том, чтобы отсортировать значения, затем выбрать значение на полпути вниз список.

, Возможно, Вы ищете что-то вроде этого, но для 2D или 3D точек. Проблема в 2D и более высоком, Вы не можете отсортировать. Нет никакого естественного порядка. Тем не менее, существуют способы избавиться от выбросов.

Один путь состоит в том, чтобы найти выпуклая оболочка из точек. Выпуклая оболочка имеет все точки на "внешней стороне" набора точек. Если Вы сделаете это и выведете точки, которые находятся на оболочке, то Вы будете выводить выбросы, и точки, которые остаются, дадут более "представительный" центроид. Можно даже несколько раз повторять этот процесс, и результат добр как очищение луковицы. На самом деле это называют "очищением выпуклой оболочки".

12
ответ дан 30 November 2019 в 00:05
поделиться

Вы используете, может увеличить суммирование точности - суммирование Kahan - было этим, что Вы имели в виду?

3
ответ дан 30 November 2019 в 00:05
поделиться

Потенциально более эффективный: при вычислении этого многократно можно ускорить это вполне немного путем хранения двух постоянных переменных

N  # number of points
sums = dict(x=0,y=0,z=0)  # sums of the locations for each point

затем изменение N и суммы каждый раз, когда точки создаются или уничтожаются. Это изменяет вещи от O (N) к O (1) для вычислений за счет большего количества работы каждый раз, когда точка создается, перемещается или уничтожается.

2
ответ дан 30 November 2019 в 00:05
поделиться

"Более точный центроид" я полагаю, что центроид определяется путем, Вы вычислили его следовательно не может быть никакого "более точного центроида".

0
ответ дан 30 November 2019 в 00:05
поделиться

Да, который является корректной формулой.

, Если у Вас есть большое число очков, можно использовать симметрию проблемы (быть им цилиндрический, сферический, зеркальный). Иначе можно одолжить у статистики и насчитать случайное число очков и просто иметь немного ошибки.

0
ответ дан 30 November 2019 в 00:05
поделиться

Вы получили его. То, что Вы вычисляете, является центроидом или средним вектором.

-1
ответ дан 30 November 2019 в 00:05
поделиться
Другие вопросы по тегам:

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