Я хочу переписать C++ EiG функции от Matlab:Эйген библиотеки - комплексные значения в EigenSolver
[V,D] = eig(A,B) produces a diagonal matrix D of generalized
eigenvalues and a full matrix V whose columns are the corresponding
eigenvectors so that A*V = B*V*D.
Я получаю положительные результаты для класса Matrix4d:
pair<Matrix4d, Vector4d> eig(const Matrix4d& A, const Matrix4d& B)
{
const Eigen::GeneralizedSelfAdjointEigenSolver<Matrix4d> solver(A, B);
const Matrix4d V = solver.eigenvectors();
const Vector4d D = solver.eigenvalues();
return pair<Matrix4d, Vector4d>(V, D);
}
Проблемой я сталкиваюсь в настоящее время является то, что eig в Matlab способен использовать сложные числа - что мне нужно в моем алгоритме.
Как я могу изменить его для получения того же/очень похожего эффекта с использованием класса Matrix4cd вместо Matrix4d?
Ehh, половина дня потеряна, и я не ожидал, что мне нужно будет изменить cd do c на Vector4d. Это скомпилировано, я должен проверить, как это работает завтра, но теперь вы помогли мне его преобразовать. Оба ответа правильны выше и ниже. Но когда я работаю с vs2005, я буду отмечать это как право (хотел бы отметить оба ...) – F1sher