问题标签 [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++11 兼容性
我尝试compressed_matrix
使用 acoordinate_matrix
作为构建器创建一个:
使用 boost 1.54 和 clang 似乎可以正常工作,但是当我使用 std=c++11 编译它时,会引发错误:
是否存在已知的 boost 1.54 与 C++11 的不兼容性?还是我犯了一些 C++11 错误?1.55 的更新日志没有提到 ublas 和矩阵,所以我猜它仍然存在。
这发生在 gcc 4.8.2 和 clang 3.4
c++ - Boost Ublas Matrix 所有元素的平方根
我正在尝试计算 Boost Ublas 矩阵的所有元素的平方根。到目前为止,我有这个,它有效。
但是,我不想使用 std::transform,而是做这样的事情: m3 = sqrtf(m1);
有没有办法让它工作?我的应用程序对性能非常敏感,因此只有在不降低效率的情况下才能接受替代方案。
PS 我想为许多其他操作执行此操作,例如 log10f、cos、acos、sin、asin、pow。我的代码中需要这些。
c++ - 如何使用 boost::numeric::ublas::matrix_vector_range 和 boost::numeric::ublas::basic_range正确地
我构造boost::numeric::ublas::compressed_matrix<std::complex<double>,boost::numeric::ublas::row_major,0,boost::numeric::ublas::unbounded_array<std::size_t>>
然后通过 提取对角线部分boost::numeric::ublas::matrix_vector_range
。来源是:
它工作正常。
然后,因为我需要将 传递compressed_matrix
给一些 FORTRAN 函数以及 FORTRAN 函数要求行和列索引必须是int
,所以我更改std::size_t
为int
. 新的源代码是:
之后,我使用g++ -std=c++11 -O2 -march=native -DNEBUG
编译源代码并运行可执行文件(gcc 版本 4.9.1)。出现以下错误:
然后我转到第 892 行的/usr/include/boost/numeric/ublas/storage.hpp并查看:
但在我的情况下start_
小于stop
. 所以我不知道为什么会出现这样的错误。任何想法是什么原因造成的?
c++ - 使用迭代器遍历 boost::ublas 矩阵
我只是想从头到尾遍历每个元素的矩阵。但是,我看到 boost 矩阵没有一个迭代器,而是有两个迭代器,我无法弄清楚如何使它们工作,以便您可以遍历整个矩阵
我的这段代码,使用 itr1 仅打印矩阵的第 1 行,使用 itr2 仅打印矩阵的第 1 列。可以做些什么来访问所有行和列?
c++ - 什么是犰狳+Atlas、犰狳+OpenBLAS、犰狳+uBLAS、犰狳+MKL?
在许多网站上,他们谈论犰狳+其他东西。他们的意思是什么?
我以以下形式使用犰狳库
在 Linux 环境下。
在这个网站
Armadillo+OpenBLAS
提到。他们的意思是什么?如何使用Armadillo+OpenBLAS
?
更新
现在是一年多之后。我只是添加这一点,它Armadillo
是对诸如BLAS
or之类的实现的包装OpenBLAS
。它不是矩阵运算实现。
c++ - 未分配被释放的 C++ 指针(可能是 unique_ptr 或 boost::ublas 的问题)
这是对我之前的一个问题的跟进。我正在处理的问题在上述问题的表述中进行了详细解释。不幸的是,我无法提供一个展示问题的最小示例。
在这个问题中,我试图重新定义问题并提供一个最小的例子。下面示例中显示的代码执行并执行它应该做的事情。但是,在上一个问题中提出的稍微复杂的情况下,有时会导致运行时错误
不幸的是,我只能在优化设置为-O3
(可能-O2
也是)时产生错误。这在使用调试工具时会产生问题。不幸的是,我无法通过没有/最少的代码优化来重现问题。作为参考,我正在使用gcc 4.9.1
.
在目前的问题中,我想了解我正在使用的类继承机制的结构设计是否可能从动态内存分配的角度来看是危险的。请在下面找到代码:
笔记。我正在使用外部库boost::ublas。我相信问题与ublas
对象的动态内存分配机制有关的可能性不大。
c++ - boost ublas 多精度模板解析因 std::max 而失败
我有一段非常简单的处理矩阵的代码。这是一个简短的摘录:
该代码使用 g++ 5.2.0 和 boost 1.58 在我的笔记本上完美编译和运行。但是,当我尝试在工作中使用 gcc 4.9.2 和 boost 1.53 在我的台式机上编译相同的代码时,我收到一条可怕的错误消息(数英里的模板参数),最终结果如下:
我现在有点困惑。参数的模板解析似乎失败了,这导致两个参数max
属于不同的类型。不幸的是,我不能明确地对它们进行类型转换,因为导致问题的实际调用被埋在 boost 中的某个地方uBLAS
。
由于我能够在我的笔记本上使用不同的 gcc 和 boost 版本编译相同的代码,因此这里一定存在某种版本问题。从 gcc4.9 到 5.2 是否有一些影响模板分辨率的特殊变化,或者 uBLAS 在 boost 中是否存在导致此问题的问题?
克服此类问题的建议方法是什么?虽然显而易见的解决方案是在我的工作计算机上更新 gcc 和 boost,但编写依赖于某些版本的 gcc 或 boost 来编译它的代码肯定不是非常可取的。
c++ - 提升多精度 + 数字绑定 + LAPACK
我正在尝试使用boost
多精度模板库结合lapack
后端的数字绑定来实现一些数字过程。
但是,模板解析似乎没有按预期工作。我已经能够将其缩小到这个最小的例子:
这会产生此错误消息:
是否有可能将其lapack
用作模板化到多精度的提升的后端UBLAS
,或者这是徒劳的努力?有没有其他方法可以做一个 ublas 多精度矩阵的特征向量分解?
c++ - XLL 由 XLW 制造,带有 BOOST UBLAS MyMatrix 数据类型转换为 Double ** 失败
我正在使用 XLW 创建要在 Excel 中注册的 XLL 函数。XLL 在 C++ DLL 中调用实际的数学模型。
我正在使用带有 UBLAS 的 BOOST 来帮助将 XLL MyMatrix 数据类型转换为 C++ DLL 用于输入的双 **。这可以正确构建,并且我可以在我的开发环境中正确使用具有数组输入和输出的函数。
但是,当我使用 InstallShield 安装程序在目标计算机上安装我的 Excel 加载项时,具有数组输入的函数返回“转换为双精度”错误,而不是来自 C++ DLL 的函数返回值。
这是我到目前为止尝试过的,没有运气:
1.使用 BOOST BCP 收集所有的 Numeric 库(UBLAS 没有出现),并将其包含在我的 Visual Studio 2013 项目中。然后我将 BOOST_ROOT 从包含中取出并使用项目属性,以便它使用项目中的内容(根据我的有限理解)
在目标计算机上安装这两个位的所有 Microsoft C++ Redistributables。
在目标计算机上下载并构建 BOOST,并创建 BOOST_ROOT 环境变量。在目标计算机上安装了 XLW,并在目标计算机上匹配了开发环境中的所有环境变量。
使用 Dependency Walker 来验证所有依赖 DLL 是否在目标计算机上。
一切都没有运气。我的安装程序需要包含什么?感谢您的时间。
开发环境:Windows 10 和 Visual Studio 2013 和 2015
目标计算机:装有 Office 2016 的 Windows 10
MyMatrix 声明:
函数声明中的 MyMatrix:
调用 C++ DLL 并使用 Box 将 MyMatrix 转换为 double **
盒子做转换