MATLAB: как рассчитать распределение элементов в матрице - PullRequest
0 голосов
/ 12 марта 2012

У меня есть матрица A с целочисленными элементами от 0 до N-1.

Мне нужно получить вектор V длины N, который для каждой позиции «i» будет содержать количество элементов, равное «i» в матрице A.

Например:

N = 6

A:

0  0  1
1  2  3
3  5  0

V:

3 2 1 2 0 1 0 

Какой эффективный способ сделать это?

Моя настоящая матрица составляет около 10K x 10K элементов, а N - около 100.

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

Используйте v = histc(A(:), 0:(N-1)).Чтобы получить именно ваш результат, выполните v = v'.

2 голосов
/ 12 марта 2012

Вы хотите использовать histc (после изменить форму для преобразования в вектор)

n = histc (x, ребра) подсчитывает количество значений в векторе x, которые выпадают между элементами вектора ребер (который должен содержать монотонно неубывающие значения). n - длина (ребра) вектора содержащие эти цифры.

V = histc(reshape(A,1,[]), 0:(N-1) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...