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



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

问题:我有一个 2D 矩阵说

A =   8     1     6
      3     5     7
      4     9     2

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

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

现在我希望(1,1), (2,2), (3,3) A被分配一些值,比如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以将logical true的相应位置设置为 1:

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

最新更新