gpt4 book ai didi

matlab - 使用 "find"命令累加值 "without for loops"

转载 作者:行者123 更新时间:2023-12-02 17:31:08 24 4
gpt4 key购买 nike

我将使用 find 从一个矩阵(名为 lag)中获取索引,然后将它们从另一个矩阵(H)中的对应值相加).这将需要一个 for 循环。 (矩阵是二维的。)

(此处使用max 来暗示一个通用示例)

D=zeros(max, 1)
for j = 1:max
ind = find(lag==j)
D(j) = sum(H(ind))
end

这是一个 4 点示例。点位于 (1,1)、(1,2)、(2,1)、(2,2)。这是地统计学方法的一部分。 H 中计算了所有点之间的距离。 lagsH 但向下舍入然后加 1 以将距离与其最接近的整数相关联(称为滞后的分类)。我现在想将每个 lag 的总距离加到向量 D 中。

lag (4x4) - 存储一般滞后间隔

1  2  2  2
2 1 2 2
2 2 1 2
2 2 2 1

H (4x4) - 存储点之间的距离

0   1   1   1.414
1 0 1.414 1
1 1.414 0 1
1.414 1 1 0

我可以在没有 for 循环的情况下做到这一点吗?

最佳答案

这很容易用 accumarray 完成:

D = accumarray(lag(:), H(:));

这会为每个由第一个参数的值定义的组(lag 线性化为列向量)。

关于matlab - 使用 "find"命令累加值 "without for loops",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33137591/

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