Как я могу создать матрицу double с alglib? - PullRequest
0 голосов
/ 03 ноября 2011

Мне нужно создать матрицу с помощью alglib, потому что мне нужно использовать функцию, содержащуюся в библиотеке, но мне нужно, чтобы моя матрица содержала элемент типа double (или что-то похожее на double, реализованное в alglib) как я могу это сделать?

если это невозможно, кто-нибудь знает библиотеку, которая реализует функцию SVD даже для матрицы типа double?

Я использую c ++.

спасибо

Ответы [ 2 ]

6 голосов
/ 10 августа 2012

Для текущей версии 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)
1 голос
/ 03 ноября 2011

В инструкции написано:

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 - 2-мерный логический массив

integer_2d_array - двумерный целочисленный массив

real_2d_array - двумерный вещественный массив (с двойной точностью)

complex_2d_array - 2-мерный комплексный массив

Остальное должно быть довольно простым.

Это должно создать матрицу 2x2:

alglib::real_2d_array r2("[[1.1,2.2],[3.3,4.4]]");

результат:

1.1  2.2

3.3  4.4
...