San*_*lai 1 indexing matlab matrix vectorization
我真的错过了一些非常基本的东西,
问题: 我有一个2D矩阵说
A = 8 1 6
3 5 7
4 9 2
Run Code Online (Sandbox Code Playgroud)
现在我有一些X和Y索引作为向量
X = [1 2 3]
Y = [1 2 3]
Run Code Online (Sandbox Code Playgroud)
现在我想(1,1), (2,2), (3,3)的A要分配一定的价值说1
预期产量:
out = 1 1 6
3 1 7
4 9 1
Run Code Online (Sandbox Code Playgroud)
一种方法是使用sub2ind创建线性列主要索引来将这些索引引用的位置设置为1.假设这X是您的行并且Y是您的列(由于矩阵和位置是对称的,因此很难分辨):
A(sub2ind(size(A), X, Y)) = 1;
Run Code Online (Sandbox Code Playgroud)
另一种方法是创建一个sparse矩阵,将其转换为logical矩阵,并使用它来索引A以设置相应的位置logical true为1:
B = logical(sparse(X, Y, 1, size(A,1), size(A,2)));
A(B) = 1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40 次 |
| 最近记录: |