【问题标题】:Matlab Matrix indexing with both column and rowMatlab矩阵索引与列和行
【发布时间】:2017-01-12 12:59:58
【问题描述】:

假设我有一个 2 x 5 矩阵:

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

还有一个 4 x 5 的零矩阵:

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

d1 的每一列显示 1 在 z1 对应列中的位置。具体来说,我想得到如下结果:

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

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

【问题讨论】:

  • 我不明白你是如何获得第三个矩阵的。另外,请阅读How to Ask,因为 Stack Overflow 不是代码编写服务。请edit 使用您自己尝试的代码的问题,即minimal reproducible example

标签: matlab matrix


【解决方案1】:

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

【讨论】:

  • 像魅力一样工作!欣赏它
  • 很好地避免sub2ind
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
  • 1970-01-01
  • 2018-03-26
  • 2015-07-10
  • 2011-12-24
  • 1970-01-01
  • 2014-05-12
相关资源
最近更新 更多