2015-05-05 4 views
0

Я пытаюсь использовать Армадилло разложить матрицу, состоящую из целых чисел (т.е. arma::Mat<int>) в собственные значения и собственные векторы
Однако, он всегда дает мне скомпилировать ошибку, независимо от того, что я ставлю в качестве входной матрицы и вектора выхода/матрица типа
Он работает, когда я объявить матрицу ввода как arma::Mat<double>, выходной вектор (собственные значения), как arma::Col<std::complex<double>> и выходной матрица (собственные векторы), как arma::Mat<std::complex<double>>
Я попытался с помощью int и/или std::complex<int> как типов для входов и выходов, но ни один из них не работал.
Есть ли способ, которым я могу разложить матрицы целых значений?
ThanksArmadillo целых собственного разложение

+0

какая ошибка компиляции? – kylecorver

+0

@kylecorver, если я использую 'std :: complex ' как тип Я получаю 'unsupported type' и' mismatched types'
, если я использую 'int' Я получаю' arma :: Col не является производным от arma :: Col < std :: complex <_Tp>> ' –

ответ

0

Сначала преобразовать целочисленную матрицу в двойную матрицу с помощью функции conv_to. Например, imat A = ...; mat B = conv_to<mat>::from(A);. Затем вы можете сделать собственное разложение на преобразованной матрице.

+0

Мне абсолютно нужно преобразовать? Есть ли способ сделать это, не превращаясь в двойное? –

+0

Armadillo использует LAPACK (или эквивалентную библиотеку, такую ​​как Intel MKL) для собственного разложения. LAPACK не поддерживает целые матрицы. – mtall

+0

oh ok спасибо большое –

Смежные вопросы