Adding up sizes of cell arrays

10 次查看(过去 30 天)
Hi, I am wondering how to add up the sizes of cell arrays for each "class." The "classes" are part of a loop. I need to be able to index each sum into j.
for j = 1:NumberOfClasses
sizeOfCellArray{j} = size(CellArray{j})
sum(j) = sizeOfCellArray(j).*sizeOfCellArray(j+1)
end
I know that this is wrong, because sizeOfCellArray(j+1) gets an error (Index exceeds matrix dimensions), but am I on the right track?
  1 个评论
Jan
Jan 2012-6-27
Do not shadow the built-in function SUM by using a variable of the same name.

请先登录,再进行评论。

采纳的回答

Tom
Tom 2012-6-27
You've made sizeofCellArray a cell, but then treat it like a double:
for j = 1:NumberOfClasses
sizeOfCellArray(j,:) = size(CellArray{j})
sum(j,:) = sizeOfCellArray(j,:).*sizeOfCellArray(j+1,:)
end
I'm not sure how you're accessing j+1 though? I would also advise that you change the name of the 'sum' variable, in case you want to use the built-in sum function later

更多回答(1 个)

Kye Taylor
Kye Taylor 2012-6-27
I assume you have a 1-by-NumberOfClasses cell array called CellArray.
Furthermore, I assume that each element of CellArray contains an array.
The following command will return a 1-by-NumberOfClasses double array, where the jth element gives the number of elements composing the array stored in CellArray{j}.
sizes = cellfun(@numel, CellArray);
The total number of elements contained in the contents of CellArray is given by
sum(sizes)
(Make sure you clear your variable sum - in your question's original code - before issuing the above command)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by