Summing arrays within a cell array.
5 ビュー (過去 30 日間)
古いコメントを表示
I've got a cell array which consists of 501 4D arrays, I want to sum all of these together and output a single 4D array. I've tried using sum and plus but get the error saying too many input arguments.
1 件のコメント
Jan
2018 年 1 月 4 日
Please post the code, instead of telling what it should do, and a copy of the complete error message, instead of a short rephrasing. Thanks.
採用された回答
Jan
2018 年 1 月 4 日
編集済み: Jan
2018 年 1 月 4 日
What about a simple loop?
S = 0;
for k = 1:numel(C)
S = S + C{k};
end
You can check if a vectorized code is faster:
S = sum(cat(5, C{:}), 5);
While it does not have the overhead for the loop, it requires a large temporary array.
4 件のコメント
Jan
2018 年 1 月 7 日
@mathman: Only the variable on the left side of the assignment operator "=" is modified. This means, that S is 0 initially. Then in the first iteration, S is replaced by S + C{1}. In the 2nd iteration, this new S is replaced by S + C{2}, and so on. This is equivalent to (assuming that C has 5 elements):
S = C{1} + C{2} + C{3} + C{4} + C{5}
You can simply try if:
C = {1,3,4,7,8}
S = 0;
for k = 1:numel(C)
fprintf('Loop %d\n', k);
disp(C{k})
disp(S)
S = S + C{k};
disp(C{k})
disp(S)
end
The debugger helps also to find out, what's going on: https://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!