gpt4 book ai didi

c++ - 两个 Eigen::VectorXd 的高效(非标准)连接

转载 作者:行者123 更新时间:2023-11-27 23:50:13 73 4
gpt4 key购买 nike

我有两个 Eigen::VectorXd 对象,A 和 B,具有相同的维度 n。

我想创建一个新的 vector C,这样:

  • 如果 B[i] 是 NaN,则 C[i] = A[i]
  • 否则:C[i] = B[i]

由于应用程序对延迟敏感,我想避免制作 A 和 B 的拷贝。

现在我正在使用一个简单的 for 循环,但我想要有关如何使用 Eigen 以更智能(更)的方式实现它的建议。

最佳答案

尝试使用 select :

C = (B.array() == B.array()).select(B, A);

B==B 在非 NaN 的值中为真,否则为假。对于 true 值,select 返回第一个矩阵,false 返回第二个。

如前所述below by chtz , 更紧凑的写法是:

C = B.array().isNaN().select(A, B);

在性能方面,这不是向量化的(至少我上次检查过),但不会引入 AB 的拷贝。它可能与您编写的内容相同(据我所知,没有看到代码)。

关于c++ - 两个 Eigen::VectorXd 的高效(非标准)连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47013849/

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