使用高级构造函数将阵列转换为Armadillo Vec
Using advanced constructors to convert array to armadillo vec
我正在尝试将类型ODE_VECTOR的对象转换为Armadillo VEC,以便新对象将继承Armadillo库的线性代数功能。作为问题的一个简单示例,我正在使用C 数组的演示:
#include <iostream>
#include <random>
#include <armadillo>
using namespace std;
using namespace arma;
int main() {
double b1 = 0.2;
double b2 = 0.1;
const double state[2] = {b1, b2};
rowvec B(&state[0], 2);
cout << B << endl;
mat A(2,2); A.fill(0.2); A.diag().ones();
cout << A << endl;
cout << B(0) * A(0,0) << endl; // x
return 0;
}
B1和B2中包含的数据保存在B的元素中,以使运行此脚本返回以下内容:
0.2000
0.1000
1.0000 0.2000
0.2000 1.0000
0.2
但是,如果我用
替换xcout << B * A << endl;
我遇到的错误表明b尚未继承标准的腋窝线性代数功能:
[ 50%] Building CXX object CMakeFiles/untitled.dir/main.cpp.o
[100%] Linking CXX executable untitled
CMakeFiles/untitled.dir/main.cpp.o: In function `void arma::blas::gemv<double>(char const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)':
/usr/include/armadillo_bits/wrapper_blas.hpp:36: undefined reference to `wrapper_dgemv_'
CMakeFiles/untitled.dir/main.cpp.o: In function `void arma::blas::gemm<double>(char const*, char const*, int const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)':
/usr/include/armadillo_bits/wrapper_blas.hpp:71: undefined reference to `wrapper_dgemm_'
collect2: error: ld returned 1 exit status
CMakeFiles/untitled.dir/build.make:94: recipe for target 'untitled' failed
make[3]: *** [untitled] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/untitled.dir/all' failed
make[2]: *** [CMakeFiles/untitled.dir/all] Error 2
CMakeFiles/Makefile2:79: recipe for target 'CMakeFiles/untitled.dir/rule' failed
make[1]: *** [CMakeFiles/untitled.dir/rule] Error 2
Makefile:118: recipe for target 'untitled' failed
make: *** [untitled] Error 2
任何人都可以解释如何正确使用高级构造函数(ARMA文档(来使此操作?
谢谢
您需要在乘法中具有正确的格式。B型是2x1,A为2x2。更改为
mat B(&state[0], 1,2);
或
rowvec B(&state[0], 2);
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 复制列表初始化的隐式转换的等级是多少
- 正在将指针转换为范围
- 使用高级构造函数将阵列转换为Armadillo Vec
- 从C数组(column-major)转换为armadillo矩阵(arma::mat),无需复制
- 将Armadillo中的矩阵从稀疏转换为密集(从稀疏到密集)
- 使用RppArmadilloExtensions/sp_mat.h从矩阵到armadillo的稀疏矩阵转换
- 将cx_vec元素强制转换为double complex armadillo c++