【问题标题】:Assigning specific indices given by X,Y vectors to some number MATLAB将 X,Y 向量给定的特定索引分配给某个数字 MATLAB
【发布时间】:2015-04-19 04:37:36
【问题描述】:

我真的错过了一些非常基本的东西,

问题: 我有一个二维矩阵说

A =   8     1     6
      3     5     7
      4     9     2

现在我有一些 X 和 Y 索引作为向量

X = [1 2 3]
Y = [1 2 3]

现在我想为A 中的(1,1), (2,2), (3,3) 分配一些值,比如1

预期输出:

out =   1     1     6
        3     1     7
        4     9     1

【问题讨论】:

  • 我猜我想通了sub2ind
  • @rayryeng 我担心如果我删除太多问题,我的帐户可能会被删除,如果你能写一个答案,我会接受它..如果你不介意:)跨度>
  • 哦 :) 当然。我当然会。
  • 我已经写了一个答案。我还写了一种替代方法,因为有不止一种方法可以做到。

标签: matlab matrix indexing vectorization


【解决方案1】:

一种方法是使用 sub2ind 创建线性列主索引,将这些索引引用的位置设置为 1。假设 X 是您的行,Y 是您的列(很难说因为矩阵和位置是对称的):

A(sub2ind(size(A), X, Y)) = 1;

另一种方法是创建一个sparse矩阵,将其转换为logical矩阵,并用它来索引A,将logicaltrue的对应位置设置为1:

B = logical(sparse(X, Y, 1, size(A,1), size(A,2)));
A(B) = 1;

【讨论】:

  • 为其他答案点赞:)
  • @SanthanSalai - 谢谢 :) 这取决于我的心情。有时我喜欢sparse,而其他时候我喜欢使用sub2ind....我不妨给你看看!
猜你喜欢
  • 2018-08-23
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 2013-07-05
  • 1970-01-01
  • 2013-08-22
相关资源
最近更新 更多