gpt4 book ai didi

matlab - 在matlab中,不使用循环为每一行增加不同的列元素

转载 作者:行者123 更新时间:2023-12-02 09:59:29 26 4
gpt4 key购买 nike

假设您有一个由零组成的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com