2017-02-19 24 views
1

У меня есть массив 1x24 клеток под названием chaining, у которого каждая ячейка содержит 119x119 матрицу:Как суммировать значения в соответствующих индексах ячеек?

enter image description here

Я хочу найти сумму каждого соответствующих элементов всех клеток, и хранить их в матрице, называемой result. То есть (j,k)-й элемент result должен содержать сумму (j,k)-го элемента всех матриц в массиве ячеек chaining.

Код я написал, чтобы сделать это:

for j=1:size(chaining,2) 
    for k=1:size(chaining,2) 
     result(j,k) = sum(chaining{1,:}(j,k)); 
    end 
end 

Но это дает ошибку, потому что, по-видимому MATLAB не может агрегированные массивы клеток по какой-то причине (то есть chaining{1,:} часть).

Неужели кто-нибудь может показать мне, как это сделать?

+0

использование 'j' в качестве имени переменной в Matlab [не рекомендуется] (http://stackoverflow.com/q/14790740/1714410). – Shai

+1

@Shai О, решаясь для сложных чисел, получил его. Благодаря :) – Kristada673

ответ

3

как о

result = sum(cat(3, chaining{:}), 3); 

Что произошло здесь?
Во-первых, мы преобразовать массив ячеек в 3D-массива с помощью «укладки» элементы 2D ячейки на третьем измерении:

cat(3, chaining{:}) 

После того, как мы имеем 3D массив size 119-на-119 в каждом конкретном 24 мы можем подвести вдоль третьего измерения и получить result из size 119-на-119:

sum(..., 3); 

Для получения дополнительной информации см cat и sum страницы справки.


КСТАТИ
Если вы настаиваете на chaining{1,:}(jj,kk) решения типа (не рекомендуется), вы могли бы найти subsref command полезным.

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

  • Нет связанных вопросов^_^