1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #include <Eigen/Dense>
- #define EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET
- #define EIGEN_IM_MAD_AS_HELL_AND_IM_NOT_GOING_TO_TAKE_IT_ANYMORE
- #include <Eigen/Sparse>
- using namespace Eigen;
- #include <cstdio>
- #include <iostream>
- using namespace std;
- #include <igl/slice.h>
- #include <igl/speye.h>
- #include <igl/print_ijv.h>
- using namespace igl;
- int main(int argc, char * argv[])
- {
- // Dense
- MatrixXd A = MatrixXd::Identity(5,5);
- cout<<"A=["<<endl<<A<<endl<<"];"<<endl;
- // Row and column indices
- MatrixXi R(6,1);
- R<<0,1,2,4,4,0;
- cout<<"R=["<<endl<<R<<endl<<"];"<<endl;
- MatrixXi C(4,1);
- C<<2,2,4,0;
- cout<<"C=["<<endl<<C<<endl<<"];"<<endl;
- MatrixXd B;
- cout<<"B=A(R,C);"<<endl;
- slice(A,R,C,B);
- cout<<"B=["<<endl<<B<<endl<<"];"<<endl;
-
- cout<<endl;
- //SparseMatrix
- SparseMatrix<double> spA;
- speye(5,5,spA);
- cout<<"spA_IJV=["<<endl;print_ijv(spA,1);cout<<endl<<"];"<<endl;
- cout<<"spA=sparse(spA_IJV(:,1),spA_IJV(:,2),spA_IJV(:,3));"<<endl;
- SparseMatrix<double> spB;
- cout<<"spB=spA(R,C);"<<endl;
- slice(spA,R,C,spB);
- cout<<"spB_IJV=["<<endl;print_ijv(spB,1);cout<<endl<<"];"<<endl;
- cout<<"spB=sparse(spB_IJV(:,1),spB_IJV(:,2),spB_IJV(:,3));"<<endl;
- return 0;
- }
|