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