2015-02-12 1 views
0

У меня есть матрица смежности 333 x 333, которая состоит из значений, которые я хотел бы усреднить в соответствии с идентификатором каждой ячейки, которая определена в отдельный вектор 333x1. Во втором векторе определено 13 различных групп, поэтому в идеале я мог бы вычислить новую матрицу 13 x 13, в которой каждая ячейка содержала среднее значение соответствующих значений из большей матрицы.Вычислить среднее значение элементов в матрице, соответствующее значению в отдельной матрице

матрица matrix_1: 333 х 333 -> содержит значение для каждого парного взаимодействия

vector_2: 333 х 1 -> содержит идентификатор (диапазон: 1 - 13) для каждого из элементов матрицы matrix_1 (элементы то же самое в обоих строках и столбцах)

ideal output = matrix_2: 13 x 13 -> содержит значения в каждой ячейке, которые отражают средний балл для всех примеров конкретного сравнения идентичности.

например. matrix_2 (1,1) -> должна содержать среднюю оценку всех значений от 1 до 1 от матрицы_1

например. matrix_2 (1,2) -> должен содержать средний балл всех 1 до 2 значений (и 2 до 1) значений от матрица matrix_1

Заранее спасибо

Mac

+0

Значит, это верхняя/нижняя/симметричная матрица? – knedlsepp

+0

да, это симметричная матрица –

ответ

2

Я не 100% некоторые из вашего описания, но я думаю, вы хотите:

[I,J] = ndgrid(V); 
out = accumarray([I(:),J(:)], M(:), [], @mean); 
+0

Awesome! Я думаю, что сработало! –

+0

Похоже, вы в последнее время попадаете в 'аккумулирование' :-) –

+0

@LuisMendo: Как только я узнал из одного из ваших ответов несколько недель назад, эта красота может выводить сгенерированные подмножества через ячейки, я, наконец, теряюсь в ее прекрасном коричневом глаза и хотят сделать с ней маленькие «аккуратные» и «массивные» дети! – knedlsepp

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