问题标签 [boost-ublas]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ 在 boost 中使用 Lapack
在开发程序时,我经常使用提升 UBLAS 类型来处理 hermitian_matrix 等矩阵。
我需要计算特征值,正如我所见,UBLAS 与此无关。第一个解决方案是使用 LAPACK,但我不明白如何将不同的 UBLAS 矩阵类型传递给 LAPACK 库。
除了将 UBLAS 类型转换为常规数组并传递指针之外,是否有任何解决方案?
c++ - 为什么 uBLAS 没有 `operator*(matrix, vector)`?
在文档中,他们说
我们决定不使用运算符重载...
prod
相反,他们提供这些。但为什么?有什么好的理由吗?我喜欢这样做matrix * vector
(就像在大多数其他语言中一样)。我想理解为什么他们没有重载这个操作符来理解为什么自己做可能是个坏主意。或者,如果我自己超载它,它们不是任何缺点吗?
c++ - 提升向量大小构造函数不起作用
当我编译以下代码时:
我在下面抱怨构造函数中的值 3 得到这个错误。boost 示例代码本身显示了使用构造函数初始化的向量的大小。
如果我改为使用这样的空构造函数运行它
然后它运行良好。某处我犯了一个错误,因为 BOOST 示例代码看起来像这样。
我想它在我的 make 文件中的某个地方,尽管我不确定是什么。
我的整个 Makefile 看起来像这样:
任何帮助将不胜感激。
在此先感谢,
马克斯
c++ - 使用 boost 的 LU 求解器但避免计算矩阵逆?
我正在使用 Boost 提供的 LU 分解来求解 C++ 中的线性方程组。
似乎 lu_substitute 计算了输入矩阵的逆,这在计算上是昂贵的(如此处所讨论的)。
有什么办法可以避免使用增强功能?
c++ - Ublas Matrix的Element乘积的高效实现
makemake 我对 Boost Ublas Matrix 的逐个元素产品的默认函数进行了基准测试,发现 element_prod 比我用简单的 for 循环编写自己的实现要慢得多。所以,我决定编写自己的版本。
我正在尝试在如下语句的帮助下实现将逐元素矩阵乘法的代码:
在这里,我想利用 C++11 移动语义来有效地返回乘法的输出。
这就是我到目前为止所拥有的。
在这里,在 operator* 重载中,我必须创建一个临时矩阵来存储计算结果。我认为这增加了很大的开销。有什么建议可以解决这个问题吗?
另一种选择是将重载的参数设置为非 const,并覆盖其中一个矩阵并返回它,但我认为从长远来看这是非常冒险的,我宁愿避免它。
考虑我想要这样的情况:
矩阵 m = m1 * m2 * m3 * m4 * m5 * m6;
在这里,您可以看到我在实现中为 temp 分配了 6 次内存。m 应该只需要分配一次。进一步的分配只是开销。
c++ - 如何将双精度的 Boost uBLAS 向量与复数双因子相乘?
是否可以计算双精度的 uBLAS 向量与复数双精度的元素乘积?以下代码无法编译,因为它找不到重载的运算符 *。我希望它能够工作,因为将双精度与复双精度相乘是明确定义的。
使用 GCC 4.6 和 Boost 1.55.0 编译它会产生以下结果:
boost - CLMath 而不是 Boost 与 PyOpenCL
当我在 PyOpenCL 设置过程中运行 configure.py 时,唯一需要定向的库是 boost 和 OpenCL。是否可以安装 CLMath(来自 AMD)并使用它而不是 uBLAS/BOOST?
我意识到自 V0.92 以来不再需要 BOOST,但配置路径仅标记为 BOOST。
c++ - 为什么箭头运算符“->”在 boost::numeric::ublas::vector<...>::iterator 上不起作用?
考虑这段代码:
为什么使用箭头运算符的循环中的第一行无法编译,而使用 operator* 的下一行工作正常?我习惯于将箭头运算符与 std 容器迭代器一起使用,并想知道为什么它会因 boost::numeric::ublas 迭代器而失败。
我正在使用 boost 1.54 和 gcc 4.9.1,确切的错误消息是:
c++ - 如何在初始化列表中创建一个非空的 boost ublas::vector?
我正在尝试做这样的事情
结果应该是,向量a_
被声明为包含a_[0]=1.25, a_[1]=2.75, a_[2]=3.34
.
此代码不起作用,因为boost::numeric::ublas::vector
没有可以处理的构造函数vector<double>( { 1.25, 2.75, 3.34 } )
我应该改用什么?也许是构造函数
来自boost 文档有帮助吗?
c++ - 如何将元素插入到具有动态大小的 ublas 矩阵中
尝试在最初未指定大小的矩阵中插入元素时出现运行时错误。
下面的代码为 m1 运行 finr 但为m2抛出错误。
如果有人可以提供替代方案来实现这一目标,我将不胜感激。