将 X、Y 向量给出的特定索引分配给某个数字 MATLAB

Assigning specific indices given by X,Y vectors to some number MATLAB

我真的缺少一些非常基本的东西,

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

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 创建线性列主索引,将这些索引引用的位置设置为 1。假设 X 是您的行,Y是你的列(很难说因为矩阵和位置是对称的):

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

另一种方法是创建一个sparse矩阵,将其转换为logical矩阵,并使用它索引到A以设置[=16]对应的位置=] true 到 1:

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