MATLAB: Cell array summation

cell arrayMATLABsummation

Hi. I'am working on SVD++ algorithm for my course project and I've recently faced a huge bottleneck it the code which I am unable to solve by myself.
the code which consumes approximately 70% of time is:
for item=1:length(UserDataClear2)
Ys=Ys+ItemInfo{UserDataClear2{user}(item),4};
end
It does the following:
for each user there is a vector of items he rated (just numbers). It finds corresponding vector ItemInfo(x,4) where x stand for item's number (which i get from user profile, so set of items changes for each user).
I need to find a sum of all these vectors (ItemInfo(x,4)) – which seems to be the hardest part, as these vectors are stored in cell array.
Other variants such as
for item=1:length(UserDataClear2)
Ys{item}=ItemInfo{UserDataClear2{user}(item),4};
end
YsSum=sum(cat(2,Ys{:}),2)
work much slower.
In other words: I need to sum vectors from cell arrays, whereas vectors these vectors are different for each user; all of them are stored in huge cell array.
Any ideas how this code can be imporved?
Sincerely, Alex.

Best Answer

The slowdown seems to be caused by the use of cell data for indices into ItemInfo. Try this:
Ys = sum([ItemInfo{UserDataClear2{user},4}])
This accesses the array UserDataClear2 only once.