问题标签 [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++ - 运算符重载 Boost ublas Vector
有没有办法可以在 C++ 中为 boost 向量重载“/”运算符?
我看到像 Overloaded 'operator/' must be a binary operator 之类的错误(有 1 个参数)
c++ - 删除 C 上的非泛型模板参数
我正在使用 ublas 作为我的矩阵代码,但我希望它是可交换的,所以我这样做了:
今天,我需要将其中一些矩阵更改为有界大小,所以我也会有这个:
问题是我的旧函数声明:
不再工作。它给了我:
我设法通过将声明更改为:
问题是我的定义是一个 cpp 文件,所以我必须在 cpp 中做这样的事情:
有什么方法可以避免执行 dummyFunc 或以其他方式概括该函数?
c++ - 为什么我可以像标量矩阵一样初始化常规 Boost 矩阵?
为什么这行得通?它不在任何地方的文档中...
输出:
c++ - 多精度数的 Boost 矩阵乘积
我正在尝试在 VS 2010 Express 中使用 Boost.Multiprecision 和 Boost.uBLAS 在 C++ 中实现一些高精度计算。但是,即使在最简单的情况下,我的代码也无法编译,并出现以下错误:
错误 C2677:二进制“+=”:未找到采用“boost::multiprecision::detail::expression”类型的全局运算符(或没有可接受的转换)c:\program files (x86)\boost_1_53_0\boost\numeric \ublas\functional.hpp 1176
编译器抱怨的那行在 ublas 的functional.hpp 中:
我使用 anumber<cpp_dec_float<50> >
作为高精度浮点数的类型,实例化两个矩阵 E 和 m - 这很好用。但是,如果我尝试使用 prod 将它们相乘,则代码无法编译。此处提供的多精度常见问题解答建议将 prod 的所有参数显式转换为高精度类型,但prod(static_cast<matrix<number<cpp_dec_float<50> > > >(E),static_cast<matrix<number<cpp_dec_float<50> > > >(m) )
无济于事。
知道我还缺少什么吗?提前致谢。
c++ - 双倍的溢出到负值吗?
嗨,我正在使用 g++ 编译器并且正在经历(我认为)是双打下溢,这可能吗?如果是的话,行为是如何定义的
我在这里上传了协方差矩阵 (51x51) 的 csv 格式:http: //pastebin.com/r0fx1qsx
这是我用来计算行列式的代码(在 c++ 中需要提升)(我已经切换到长双精度并且没有效果):
我为数据给出的结果是-3.59916e-183
。
当我运行以下matlab
代码时:
如您所见,一个是(略微)积极的,而一个是(略微)消极的
c++ - How to perform an operation on a subset of elements in a Boost::uBlas::vector?
Suppose you have a long boost::numeric::ublas::vector and you want to perform an update operation on a subset of the elements. How many of the elements should be updated is somewhere between "all" or "none". Which elements to update is given by a sparse compressed_vector containing a "1" for each element that should be updated.
I could think of two ways to solve this problem:
Just multiplying the right hand side with a mask:
Problem with this is that it looks quite inefficient: wouldn't ublas calculate the whole vector and then just throw away all unused values in this case (ie. where update_mask==0)?
I'd expect it to be even slower than just
which would be horribly inefficient if only a few elements have to be updated.
Loop over all values to update
The problem with this is that a) it looks awful, b) kinda defeats the purpose of using vectors in the first place and c.) should be horribly inefficient if a lot of indices are to be updated and/or the operation becomes more complex.
Any ideas on how to do this efficiently? I'm pretty sure this is a fairly common problem, but I couldn't find anything useful about it (and the ublas documentation is ... not fun).
c++ - 如何调整 boost::property_map 以便像 ublas::vector 一样使用它?
我正在寻找一种将Boost Graph Library与Boost uBLAS结合使用的智能方法。更准确地说,我需要通过使用图形邻接矩阵和包含每个顶点的一些其他顶点属性的向量之间的标量积的结果来更新每个顶点的给定顶点属性。让我给你一个(不幸的是冗长的)最小的例子来说明这个问题:
现在,虽然我的建议是一个可能的解决方案,但我对它不太满意。问题是,(a)我将整个old_potential
属性映射复制到关联ublas::vector
以计算标量积。并且(b)我还需要遍历new_potential
属性映射以将新计算的值返回到图中。我怀疑这些操作会在我的应用程序中重复很多次,这就是为什么我希望从一开始就尽可能干净地完成这部分。
理想情况下,我希望完成所有这些来回复制,而是使用某种适配器来制作boost::property_map
工作作为ublas::vector
. prod()
使用这样的东西会很棒:
如果有人知道如何实现此类功能或如何改进我的解决方案,我将不胜感激。
c++ - Boost.uBLAS 中的矩阵表达式和向量表达式类是什么?
我试过阅读 Boost Documentation,但我不明白这个表达概念。Matrix 类继承了一个matrix_expression 类,我不明白这个类是干什么用的。
谢谢你。
c++ - uBLAS矩阵清内存
我有一个 uBLAS 矩阵,如下所示:
一旦我完成了对矩阵的一组计算,我希望释放它的内存。
mat.clear()
根据文档,我一直在使用“清除矩阵”。但是我的程序总是内存不足。
深入研究标题,我发现:
所以 . 有一个明显的语义问题clear()
。
那么问题是,我如何确保内存被释放?
c++ - C++中boost向量的子类
如何创建 a 的子类,boost::numeric::ublas::c_vector<float, 3>
它的三个元素可以使用 .x .y 或 .z 访问,并在表单中有一个构造函数vec3(float x, float y, float z);
。我想使用 boost 向量,因为我不想自己编写一个类的所有运算符和数学函数的功能,而且我已经在使用 boost 库。
例如: