【问题标题】:Construct a simple index matrix from a zero matrix [duplicate]从零矩阵构造一个简单的索引矩阵
【发布时间】:2015-11-20 14:32:16
【问题描述】:

假设

A = zeros(5,3);
X = [1;2;3;2;1];

我想要得到的是:对于A的五行中的每一行,用“1”替换一个“0”,替换的位置由向量X表示。所以在这个简单的例子中, 得到的矩阵为

 1     0     0    
 0     1     0
 0     0     1
 0     1     0
 1     0     0

有没有一种好方法可以在不涉及行循环的情况下获得这样的矩阵?

【问题讨论】:

  • 你使用什么编程语言?
  • Jie Wei - 我已经添加了 MATLAB 标签。如果这不正确,请编辑并用正确的标签替换它。
  • 这已经被问死了。见副本。对于副本,只需将最终结果转置即可达到您想要的效果。
  • @beaker 谢谢,烧杯。
  • @rayryeng。谢谢,“稀疏”的方式效果很好。

标签: matlab matrix sparse-matrix


【解决方案1】:

应该这样做:

A(sub2ind([5, 3], (1: 5)', X)) = 1

我现在没有MATLAB,但它可以在Scilab 中使用。

【讨论】:

  • 在 MATLAB 中工作!通常对于 A n-by-m 和 X n-by-1:A(sub2ind([n,m], (1:n)', X)) = 1
  • @Geoff 感谢您的概括!在我匆忙发布时,我将其硬编码为 5 x 3 矩阵。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多