假设您有一个由零组成的 4x4 矩阵 A:
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
还有一个 4x1 向量 B,表示矩阵 A 的列索引(因此值为 [1:4])
4
2
3
1
现在我想在向量 B 的每一行的索引上增加矩阵 A 中的列位置。 我自己尝试了几种构造,但无法完全做到这一点。
例如我尝试过:
A(:, B) = A(:, B)+1
这只会增加 A 中的每个元素。
这就是我希望操作执行的方式:
>> A(somethting(B)) = A(somethting(B)) + 1
0 0 0 1
0 1 0 0
0 0 1 0
1 0 0 0
最佳答案
您可以通过使用要寻址的每个元素的线性索引来实现此目的。使用 sub2ind
计算:
>> A = zeros(4)
A =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
>> B = [4 2 3 1]
B =
4 2 3 1
>> i=sub2ind(size(A),B,1:4)
i =
4 6 11 13
>> A(i) = A(i)+1
A =
0 0 0 1
0 1 0 0
0 0 1 0
1 0 0 0
关于matlab - 在matlab中,不使用循环为每一行增加不同的列元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27077660/