Help for vectorization??

incI=zeros(length(featInd),length(tempInd));
for f = 1:length(featInd)
incI(f,:) = tempInd + featInd(f);
end
for k=1:length(featInd)
h([incI(k,:)]') = h([incI(k,:)]')+ 1;
end

2 个评论

You need to provide more information. What is h? What is featInd? What is tempInd? How are they structured?
featInd=[1,24636] row vector
tempInd=[1,12332] row vector
h=[14593760,1] coloumn vector

请先登录,再进行评论。

 采纳的回答

Honglei Chen
Honglei Chen 2016-1-26
编辑:Honglei Chen 2016-1-26
Here is an example you can try
featInd = 1:24636;
tempInd = 1:12332;
incI = bsxfun(@plus,featInd(:),tempInd);
As to the second loop, I could be wrong but that looks just like a histogram for me, so you can probably do something like
[incU,~,incInd] = unique(incI(:),'stable');
h = zeros(14593760,1);
h(incU) = h(incU)+accumarray(incInd,ones(numel(incInd),1));

2 个评论

Updated the code with correct dimension, although the dimension of h may depend on what you have in featInd and tempInd
Thanks Honglei Chen tried your approach for second loop. Works for smaller values of tempInd & featInd. For large values unique function gives out of memory error when executed on GPU.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心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!

Translated by