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 - 1 次元ブール配列

integer_1d_array - 1 次元整数配列

real_1d_array - 1 次元の実数 (倍精度) 配列

complex_1d_array - 1 次元の複素数配列

boolean_2d_array - 2 次元ブール配列

integer_2d_array - 2 次元整数配列

real_2d_array - 2 次元実数 (倍精度) 配列

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