Sum elements over indices in cell array
显示 更早的评论
I have a cell array, in which each cell is a vector of integer numbers. These numbers are certain indices of another vector, say A. For each cell, I want to compute the sum of the elements in A, which are being indexed by my cell. For example, I can easily do this with a for loop (see code below). However, I was wondering if it is possible to vectorize this piece of code.
What I have done now, is artificially edit the cells so that they have the same length, by adding a dummy index. This dummy index then refers to a value 0 in vector A, so that I can easily sum over them by indexing A with the matrix induced by the cell array. However, this takes up a lot of memory.
Any ideas?
A = 1:15;
% some vector containging the values I need
myCell = {[1 3 4], [2 5 8 12]};
% the cell array generally contains arrays of different lengths
sumValues = zeros(1,2);
% I want to fill the array SumValues efficiently
for j = 1:2
sumValues(j) = sum(A(myCell{j}));
end
2 个评论
Rik
2022-6-10
Loops can be surprisingly fast if there isn't a straightforward way to vectorize your code. Did you run any profiling to see if this is actually the bottleneck in your process?
Lennart Sinjorgo
2022-6-11
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!