num_runs = 5; %// Number of iterations to run benchmarks
for k = 1:50000
tic(); elapsed = toc(); %// Warm up tic/toc
end
sublen = 26; %// subset length
nrows = size(A,1); %// number of rows in input matrix
nsubs = nrows/sublen; %// number of subsets
tic
for iter = 1:num_runs
idx1 = bsxfun(@plus,[1:sublen]',[0:sublen-1]*nrows);%//'# starting block indices
idx2 = bsxfun(@plus,idx1(:),[0:nsubs-1]*(nrows*sublen+sublen));%// all block indices
exclude_sum = sum(A(reshape(idx2,sublen,sublen,[])),2); %// block elements summed
%// (these would be subtracted from the wholesome sum)
out = sum(A,2) - exclude_sum(:); %// desired output
end
toc, clear idx1 idx2 exclude_sum out
tic
for iter = 1:num_runs
A(kron(eye(nsubs),ones(sublen))==1)=0;
out1 = sum(A,2);
end
toc, clear A out1
bnVtX3J1bnMgPSA1OyAlLy8gTnVtYmVyIG9mIGl0ZXJhdGlvbnMgdG8gcnVuIGJlbmNobWFya3MKZm9yIGsgPSAxOjUwMDAwCiAgICB0aWMoKTsgZWxhcHNlZCA9IHRvYygpOyAlLy8gV2FybSB1cCB0aWMvdG9jCmVuZAoKQSA9IHJhbmQoNDk0MCk7CgoKc3VibGVuID0gMjY7ICUvLyBzdWJzZXQgbGVuZ3RoCm5yb3dzID0gc2l6ZShBLDEpOyAlLy8gbnVtYmVyIG9mIHJvd3MgaW4gaW5wdXQgbWF0cml4Cm5zdWJzID0gbnJvd3Mvc3VibGVuOyAlLy8gbnVtYmVyIG9mIHN1YnNldHMKCnRpYwpmb3IgaXRlciA9IDE6bnVtX3J1bnMKICAgIGlkeDEgPSBic3hmdW4oQHBsdXMsWzE6c3VibGVuXScsWzA6c3VibGVuLTFdKm5yb3dzKTslLy8nIyBzdGFydGluZyBibG9jayBpbmRpY2VzCiAgICBpZHgyID0gYnN4ZnVuKEBwbHVzLGlkeDEoOiksWzA6bnN1YnMtMV0qKG5yb3dzKnN1YmxlbitzdWJsZW4pKTslLy8gYWxsIGJsb2NrIGluZGljZXMKICAgIGV4Y2x1ZGVfc3VtID0gc3VtKEEocmVzaGFwZShpZHgyLHN1YmxlbixzdWJsZW4sW10pKSwyKTsgJS8vIGJsb2NrIGVsZW1lbnRzIHN1bW1lZAogICAgJS8vICh0aGVzZSB3b3VsZCBiZSBzdWJ0cmFjdGVkIGZyb20gdGhlIHdob2xlc29tZSBzdW0pCiAgICBvdXQgPSBzdW0oQSwyKSAtIGV4Y2x1ZGVfc3VtKDopOyAlLy8gZGVzaXJlZCBvdXRwdXQKZW5kCnRvYywgY2xlYXIgaWR4MSBpZHgyIGV4Y2x1ZGVfc3VtIG91dAoKdGljCmZvciBpdGVyID0gMTpudW1fcnVucwogICAgQShrcm9uKGV5ZShuc3Vicyksb25lcyhzdWJsZW4pKT09MSk9MDsKICAgIG91dDEgPSBzdW0oQSwyKTsKZW5kCnRvYywgY2xlYXIgQSBvdXQx