我在这里真的缺少一些非常基本的东西,
问题:我有一个 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;