使用sub2ind在MatLab中分配索引

使用sub2ind在MatLab中分配索引,matlab,indexing,Matlab,Indexing,我有3个数据集,两个有坐标,一个有长度为n的数据,有一个循环,我会这样分配数据 MAT = zeros(m, n); for i = 1:n MAT(Z(i), X(i)) = MAT(Z(i), X(i)) + DATA(i); end 我不想做循环,因为我想做的是: MAT = zeros(m, n); mn = size(MAT); MAT(sub2ind(mn, Z, X)) = MAT(sub2ind(mn, Z, X)) + DATA; 有人知道如何正确有效地制作吗

我有3个数据集,两个有坐标,一个有长度为n的数据,有一个循环,我会这样分配数据

MAT = zeros(m, n);  
for i = 1:n
    MAT(Z(i), X(i)) = MAT(Z(i), X(i)) + DATA(i);
end
我不想做循环,因为我想做的是:

MAT = zeros(m, n);
mn = size(MAT);
MAT(sub2ind(mn, Z, X)) = MAT(sub2ind(mn, Z, X)) + DATA;
有人知道如何正确有效地制作吗


干杯。

您应该使用accumarray功能,例如: 让我们:

然后我们有:

>> MAT = accumarray([Z(:),X(:)],D(:),[m,n])
MAT =
     0     0    -5     0
     0     6     0     0
     0     0     0     8
     7     0     0     0
>> MAT = accumarray([Z(:),X(:)],D(:),[m,n])
MAT =
     0     0    -5     0
     0     6     0     0
     0     0     0     8
     7     0     0     0