Вычислить энтропию списка 2D точек в Matlab - PullRequest
0 голосов
/ 08 октября 2019

У меня есть список точек в массиве, подобный этому

points = [[1,2];[2,5];[7,1]...[x,y]]

x - от 0 до 1020, а y - от 0 до 1920.

Как вычислить энтропиюмассива точек в Matlab?

Большое спасибо!

1 Ответ

2 голосов
/ 08 октября 2019

Я предполагаю, что вы хотите рассматривать каждую [x,y] точку как одну точку данных. Давайте определим некоторые примерные данные:

A = [[1,2];[2,5];[7,1];[1,2]];

Сначала мы даем равные точки равным идентификаторам, мы можем сделать это, используя

[~,~,ic] = unique(A, 'rows');

Затем мы вычисляем частоту и с этим вероятность каждогоидентификатор:

[frequency, ~] = histcounts(ic,max(ic));
probability = frequency/sum(frequency);

С этим мы можем сразу вычислить энтропию:

entropy = -sum(probability .* log(probability))

(Убедитесь, что вы используете правильный логарифм, разные поля обычно используют разные основания.)

...