【问题标题】:Assigning indexes in MatLab using sub2ind使用 sub2ind 在 MatLab 中分配索引
【发布时间】:2012-08-21 03:03:14
【问题描述】:

我有 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;

有人知道如何正确有效地制作它吗?

干杯。

【问题讨论】:

    标签: matlab indexing


    【解决方案1】:

    您应该使用函数 accumarray,例如: 让:

    >> Z = [ 1 2 4 3 1];
    >> X = [3 2 1 4 3];
    >> D = [5 6 7 8 -10];
    >> m = 4;n = 4;
    

    那么我们有:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多