我需要用alglib创建一个矩阵,因为我需要使用库中包含的函数,但我需要我的矩阵包含double类型的元素(或类似于alglib中实现的double) 我怎么能这样做?
如果不可能有人知道一个库,即使对于double类型的矩阵也会影响SVD函数吗?
我正在使用c ++。
谢谢
答案 0 :(得分:6)
对于写入时alglib的当前版本,可以按如下方式创建双精度值的二维矩阵:
ap::real_2d_array matrix;
double data[4] = {0.1, 0.2,
0.3, 0.4};
matrix.setcontent(1, 2, 1, 2, data);
代码生成的矩阵显示为:
0.1 0.2
0.3 0.4
setcontent 函数决定了矩阵的维度和内容。它有以下定义:
setcontent(int row_start_index, int row_end_index, int col_start_index, int col_end_index, data)
或者,如果您想设置矩阵的尺寸而不填充数据,则可以使用以下内容:
setbounds(int row_start_index, int row_end_index, int col_start_index, int col_end_index)
答案 1 :(得分:1)
在手册中写道:
ALGLIB(ap.h header)定义了几种“基本”数据类型(所有包使用的类型)和许多特定于包的数据类型。 “基本”数据类型为:
alglib :: ae_int_t - 库使用的有符号整数类型
alglib :: complex - 双精度复杂数据类型,更安全的替换 对于std :: complex
alglib :: ap_error - 库引发的异常
boolean_1d_array - 1维布尔数组
integer_1d_array - 1维整数数组
real_1d_array - 1维实数(双精度)数组
complex_1d_array - 1维复杂数组
boolean_2d_array - 二维布尔数组
integer_2d_array - 二维整数数组
real_2d_array - 二维实数(双精度)数组
complex_2d_array - 二维复杂数组
其余的应该非常简单。
这应该创建一个2x2矩阵:
alglib::real_2d_array r2("[[1.1,2.2],[3.3,4.4]]");
结果:
1.1 2.2
3.3 4.4