我有一个
矩阵
a =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
和b
向量
b =
1 2 3 4 5 5
我想用b
矩阵值的引用值替换a
矩阵中每一行的值,最后生成如下矩阵而不使用for循环。
a_new =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
0 0 0 0 1
如果 b 的第一个元素,b(1) = 1
所以更改 a
向量的第一行并将第一个元素设为 1 因为 b(1 ) = 1
。
如何在不使用 for 循环的情况下实现它?
最佳答案
当然。你只需要构建一个 linear index来自 b
并使用它来填充 a
中的值:
a = zeros(6,5); % original matrix
b = [1 2 3 4 5 5]; % row or column vector with column indices into a
ind = (1:size(a,1)) + (b(:).'-1)*size(a,1); % build linear index
a(ind) = 1; % fill value at those positions
关于arrays - 如何在不使用 for 循环的情况下引用列索引向量更改矩阵的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39613081/