0

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

如果不可能,是否有人知道即使对于 double 类型的矩阵也能实现 SVD 函数的库?

我正在使用 C++。

谢谢你

4

2 回答 2

8

对于当前版本的 alglib,可以按如下方式创建双精度值的 2D 矩阵:

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)
于 2012-08-09T20:02:08.973 回答
1

在手册中是这样写的:

ALGLIB(ap.h 头文件)定义了几个“基本”数据类型(所有包都使用的类型)和许多包特定的数据类型。“基本”数据类型是:

alglib::ae_int_t - 库使用的有符号整数类型

alglib::complex - 双精度复数数据类型,更安全地替代 std::complex

alglib::ap_error - 库抛出的异常

boolean_1d_array - 一维布尔数组

integer_1d_array - 一维整数数组

real_1d_array - 一维实数(双精度)数组

complex_1d_array - 一维复数数组

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
于 2011-11-03T12:05:01.700 回答