Skip to content

Instantly share code, notes, and snippets.

@dojeda
Created August 5, 2016 12:14
Show Gist options
  • Select an option

  • Save dojeda/d0333a62b7959590184782fecc1d75a3 to your computer and use it in GitHub Desktop.

Select an option

Save dojeda/d0333a62b7959590184782fecc1d75a3 to your computer and use it in GitHub Desktop.

Revisions

  1. dojeda created this gist Aug 5, 2016.
    19 changes: 19 additions & 0 deletions eigen_mwe.cpp
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    #include <iostream>
    #include <vector>
    #include <Eigen/Dense>

    int main(int argc, char *argv[]) {

    Eigen::MatrixXd X = Eigen::MatrixXd::Random(3, 3);

    // PCA = EVD of the covariance matrix
    Eigen::SelfAdjointEigenSolver < Eigen::MatrixXd > solver(X.selfadjointView<Eigen::Lower>());
    Eigen::MatrixXd V = solver.eigenvectors(); // eigenvectors (in columns)
    Eigen::VectorXd D = solver.eigenvalues();

    std::cout << "X=\n" << X << std::endl;
    std::cout << "V=\n" << V << std::endl;
    std::cout << "D=\n" << D << std::endl;

    return 0;
    }