如何用alglib创建double的矩阵?

时间:2011-11-03 11:47:32

标签: c++ matrix alglib

我需要用alglib创建一个矩阵,因为我需要使用库中包含的函数,但我需要我的矩阵包含double类型的元素(或类似于alglib中实现的double) 我怎么能这样做?

如果不可能有人知道一个库,即使对于double类型的矩阵也会影响SVD函数吗?

我正在使用c ++。

谢谢

2 个答案:

答案 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