2016-08-13 4 views
1

У меня есть массив ячеек C, каждый элемент является матрицей N1xN2xN3. мне нужно суммировать все корреспондентские элементы в этих клетках и приводит к матричному Резу N1xN2xN3, чей элемент равенКак суммировать соответствующие элементы для каждого элемента массива ячеек

res=zeros(size(C{1})); 
for i=1:n_cell 
    res=res.+C{i} 
end 

Есть ли более эффективный способ сделать это (без цикла?)? Спасибо!

ответ

2

Вы можете объединить матрицы вдоль 4-го измерения и затем суммировать их вдоль.

res = sum(cat(4, C{:}), 4); 

Вот общее решение для любой размерности элементов C

res = sum(cat(ndims(C{1}) + 1, C{:}), ndims(C{1}) + 1); 

Если вы используете октаву, вы можете просто использовать plus:

res = plus(C{:}); 

К сожалению, этот последний вариант выиграл Не работаем над MATLAB, потому что plus в MATLAB принимает только два входных аргумента.

+0

Отлично! Большое спасибо! –