eigen 相关问题

Eigen是线性代数的C ++模板库:矩阵,向量和相关算法。

Eigen C++ 对列进行除法运算

我有一个矩阵 df,我试图按其他两列的比例填充最后一列,如下所示: df.col(0) = df.col(1).rowwise() / (df.col(1) + df.col(2)); 但我收到错误: 错误:没有类型...

回答 1 投票 0

使用 -O2 编译时,Eigen::Vector2f 未正确初始化

我遇到了一个问题,即如果 Eigen::Vector2f 与其他操作一致初始化并编译,则该 Eigen::Vector2f 未正确初始化。带有 -O2 标志。 主程序 #包括 #inc...

回答 1 投票 0

Eigen::Matrix 中的 cuda::std::complex 导致错误

使用 nvcc eigen_complex.cu -I [eigen 的路径] 编译时,下面的代码会导致以下错误,其中 nvcc 的版本为 12.4,Eigen 的版本为最新版本。有没有办法让我defi...

回答 1 投票 0

比较两个网格 c++“libigl”

我想通过使用诽谤和特征来比较第一个网格与第二个网格的节点和面的相似性 我怎样才能做到呢? 我不知道如何开始 如果你知道的话请...

回答 1 投票 0

使用导数对特征样条进行插值

我正在尝试使用指定的开始和结束导数来插值三次样条。 为此,我为特征样条创建了一个包装器: /** * 三次样条。 * @tparam vec_t 点类型。示例:Eigen::Ve...

回答 1 投票 0

什么时候建议不要使用 Eigen::Ref 作为参数?

我目前正在编写很多接受块和表达式作为输入的函数。我通常发现使用 Refs 更容易,因为它们简单、轻量级,而且也很容易确保...

回答 1 投票 0

Eigen 中三元运算符输入错误

我正在用 C++ 编写一个类来概括两个稀疏矩阵求解器(SparseLU 和 Sparse Cholesky)。当我尝试使用三元运算符时,它说操作数类型不兼容,但如果我使用...

回答 2 投票 0

使用 auto 和 Eigen 会得到错误的结果

在对两个向量求和时,使用 auto 和使用 Vector 得到了不同的结果。 我的代码: #include“stdafx.h” #包括 #include "D: xternals igen_3_1_2\include\Eigen\Geometry" 你...

回答 2 投票 0

Eigen:评估从常量矩阵到新矩阵/数组的运算

假设我有一个根据 Eigen 文档模板化的函数,以便使用 pybind11 从 C++ 和 Python 中使用它。 该函数的主要目标是执行笛卡尔 -> ...

回答 1 投票 0

如何加速三角形与AABB的相交测试

我正在学习三角形网格体素化的算法,其中涉及测试三角形和AABB之间的交集。我在网上找到了分离轴定理或SAT算法,w...

回答 0 投票 0

如何对类的特征向量的属性求和

我已经声明了我创建的类的向量,如下所示: typedef Eigen::Vector VectorT; 我正在尝试对滚动的交易窗口求和。金额 从 std::vec 切换之前...

回答 1 投票 0

C++ 中特征矩阵的并行填充

假设我正在尝试用另一个 MatrixXf 的滚动平均值填充 MatrixXf,如下所示 MatrixXf ComputeRollingMean(const MatrixXf& features) { MatrixXf df(features.rows() - 30,

回答 1 投票 0

使用 Eigen 和 FFTW 进行二维傅里叶变换

我正在尝试使用 FFTW 进行实值二维傅里叶变换。我的数据存储在动态大小的特征矩阵中。这是我写的包装类: FFT2D.h: #包括 FFT2 类...

回答 2 投票 0

避免在特征值中使用对角矩阵进行分配

问题 如何避免特征中小对角矩阵的动态分配? 语境 我正在使用本征 3.4。我有一个 N × N 对角矩阵 W: 自动 W = 本征::对角矩阵 问题 如何避免 Eigen 中小对角矩阵的动态分配? 背景 我正在使用 Eigen 3.4。我有一个 N × N 对角矩阵 W: auto W = Eigen::DiagonalMatrix<double, Dynamic>(N); 如果 N <= 512 by using a buffer on the stack:我想避免分配 double W_buffer[512]; 对于法向量和矩阵,我知道我可以使用Map: double y_buff[512]; auto y = Eigen::Map<VectorXd>( y_buff, N ); 但是,当我对对角矩阵尝试相同的操作时,它会给我一个错误,因为 InnerStrideAtCompileTime 不是 Eigen::DiagonalMatrix 的成员。 将 Map 与 DiagonalMatrix 结合使用时出现错误消息 In file included from eigen/Eigen/Core:311, from eigen/Eigen/Dense:1, from build/release/CMakeFiles/bench.dir/cmake_pch.hxx:5, from <command-line>: eigen/Eigen/src/Core/Map.h: In instantiation of ‘struct Eigen::internal::traits<Eigen::Map<Eigen::DiagonalMatrix<double, -1> > >’: eigen/Eigen/src/Core/util/ForwardDeclarations.h:34:48: required from ‘struct Eigen::internal::accessors_level<Eigen::Map<Eigen::DiagonalMatrix<double, -1> > >’ eigen/Eigen/src/Core/util/ForwardDeclarations.h:101:75: required from ‘class Eigen::Map<Eigen::DiagonalMatrix<double, -1> >’ include/volar/estimators.hpp:203:18: required from ‘static volar::R volar::PolyLE<Degree>::estimate(volar::R, volar::ViewR, volar::ViewR, const Kernel&) [with Kernel = volar::UniformK; int Degree = 1; volar::R = double; volar::ViewR = volar::View<double>]’ include/volar/kernel_smoothing.hpp:81:64: required from ‘volar::R volar::LocalRFT<Estimator, Kernel>::operator()(volar::R) const [with Estimator = volar::EigenLinearLE; Kernel = volar::UniformK; volar::R = double]’ bench/core.cpp:43:23: required from ‘void localRF(benchmark::State&) [with Method = volar::EigenLinearLE; Kernel = volar::UniformK]’ bench/core.cpp:96:1: required from here eigen/Eigen/src/Core/Map.h:30:53: error: ‘InnerStrideAtCompileTime’ is not a member of ‘Eigen::DiagonalMatrix<double, -1>’ 30 | ? int(PlainObjectType::InnerStrideAtCompileTime) | ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from eigen/Eigen/Core:163, from eigen/Eigen/Dense:1, from build/release/CMakeFiles/bench.dir/cmake_pch.hxx:5, from <command-line>: Eigen::DiagonalMatrix的第三个模板参数,MaxSizeAtCompileTime可以让你做到这一点。 与 Eigen::Dynamic 结合使用时,DiagonalMatrix 将具有足够大的内部缓冲区以容纳 MaxSizeAtCompileTime,但其大小仍会动态调整。 例如,以下内容相当于您尝试使用外部缓冲区执行的操作: auto W = Eigen::DiagonalMatrix<double, Eigen::Dynamic, 512>(N) 显然,尝试使用大于 MaxSizeAtCompileTime 的大小来初始化它会在运行时失败(使用断言),但这并不比使用 Map 时必须处理的情况更糟糕。 您可以按照您描述和使用 Map 方法的“正常”方式进行操作,而不是尝试 DiagonalMatrix asDiagonal()。 可能稍微不太干净,必须输入 y.asDiagonal() 而不是仅仅 y...也许你可以用 Eigen::Ref 做一些事情来保留对来自向量的对角矩阵的引用,但我不确定是否那会起作用的。 asDiagonal(): https://eigen.tuxfamily.org/dox/classEigen_1_1MatrixBase.html#a14235b62c90f93fe910070b4743782d0

回答 2 投票 0

为什么 Eigen 默认使用 Column-Major 而不是 Row-Major?

虽然Eigen是C++库并且C/C++使用行优先存储结构,但为什么Eigen更喜欢使用列优先存储顺序?来自 为什么 MATLAB 使用列优先顺序?帖子,我明白了,MA...

回答 3 投票 0

特征分配分段错误(Open3D)

我正在尝试在 Pointcloud 上进行一些操作,但是当调用 VoxelDownSample 函数时,我收到了分段错误信号。我发现问题是程序想要分配一些 astron...

回答 2 投票 0

在c++中为Eigen实现top_k

我有一个形状为 [B, D, C] 的 3D 特征张量 (Eigen::Tensor),其中包含代表...的置信度分数的浮点数。

回答 1 投票 0

在暗淡的 1 上堆叠本征中具有不同形状的张量

我有一系列形状为 [B, n, C] 的张量,其中 B 和 C 具有恒定大小,n 在张量之间变化(例如,[1, 5] 中的 n)。我想将所有这些张量连接成一个......

回答 2 投票 0

包含特征库时编译错误

我目前正在使用 eigen 库,这是我包含 eigen 的唯一文件: Kraftwerk2.cpp: #include“Kraftwerk2.h” Kraftwerk2::Kraftwerk2(int n){ //n: num 个实例

回答 1 投票 0

从齐次变换矩阵得到旋转和平移矩阵

我有以下代码: Eigen::Matrix4f 变换 = myMethod(); // 齐次变换矩阵 std::cout << "transformation = " << std::endl <<

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.