ここにアイデアがあります:
M = M + sparse(points(:,1),points(:,2),1,size(M,1),size(M,2),size(points,1));
ちょうどあなたが知っているので、
S = sparse(i,j,s,m,n,nzmax)
ベクトル、、を使用しi
てj
、が、非ゼロに割り当てられたスペースを持つようなスパース行列をs
生成
します。ベクトル、、、およびはすべて同じ長さです。ゼロの要素は、対応するとの値とともに無視されます。の値が重複している要素はすべて、一緒に追加されます。m
n
S(i(k),j(k)) = s(k)
nzmax
i
j
s
s
i
j
s
i
j
好奇心旺盛な方へ:
M = sprand(200000,200000,1e-6);
points = [randperm(200000) ; randperm(200000)]'; %'//Initialization over
Mo = M;
tic;
inds=sub2ind(size(Mo),points(:,1),points(:,2));
Mo(inds) = Mo(inds)+1;
toc
tic;
M = M + sparse(points(:,1),points(:,2),1,size(M,1),size(M,2),size(points,1));
toc