Matlab矩阵使用列和行进行索引

时间:2017-01-12 12:59:58

标签: matlab matrix

假设我有一个2乘5的矩阵:

d1=  3     3     1     1     2
     4     4     2     3     4

并且有一个4乘5的零矩阵:

z1=  0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0

d1的每一列显示z1中相应列中1的位置。具体来说,我希望得到一个结果:

r1=  0     0     1     1     0
     0     0     1     0     1
     1     1     0     1     0
     1     1     0     0     1

我正在寻找一种从d1和z1获得r1的有效方法。

1 个答案:

答案 0 :(得分:3)

d1转换为线性索引,并使用它们来索引z1

% Prior to R2016b:
I = bsxfun(@plus, d1, (0:size(d1,2)-1) * size(z1,1));

% On or after R2016b:
I = d1 + (0:size(d1,2)-1) * size(z1,1));

% Index using the linearized indices
z1(I) = 1