c++ - C++ 编译时特征值评估
问题描述
我有一个关于Eigen的问题无法回答。我想在编译时计算矩阵的特征值。我的矩阵大小和值是事先知道的。我对 Eigen 没有太多经验,所以我不确定这是否可能。我知道 Eigen 没有利用任何constexpr
函数,但它确实利用模板元编程来构造表达式模板。
是否可以:
- 将 Eigen 的一些设施包装在
constexpr
函数中以实现我想要的 - 使用模板元编程来实现同样的事情
我已经在谷歌周围搜索了一些,但没有找到任何足以回答我的问题的东西。
我拼凑了一个愚蠢的例子,它显然没有做我想做的事。函数本身仍然在运行时调用。
谢谢!
#include <iostream>
#include "../eigen/Eigen/Dense"
template<typename T, size_t S>
constexpr Eigen::VectorXcd test()
{
Eigen::Matrix<T,S,S> a = (Eigen::Matrix<double,S,S>() << 1, 2, 3.4, 5.4).finished();
auto s = a.eigenvalues();
return s;
};
int main()
{
static const Eigen::VectorXcd s {test<double,2>()};
std::cout << s << std::endl;
}
解决方案
推荐阅读
- python - Python Pandas 转换日期
- discord.js - 为什么我的代码在不应该运行的时候运行?
- arrays - 替换 bash 中的文件/数组内容
- python - 为什么新创建的 virtualenv 包含 python ros 包?
- c# - .NET C# - 无法加载文件或程序集 [...] 或其依赖项之一。该系统找不到指定的文件
- react-native - 在 React Native 的 UI 管理器中找不到 RNSVGTSpan
- laravel - 观察员未填写该字段
- r - 如何在R中解决“二元运算符的非数字参数”?
- regex - 如何使用 2 种不同模式获取第 n 次出现之间的所有字符串
- python - 未指定类型的编码字段;无法自动推断类型,因为数据未指定为 pandas.DataFrame