Skip to content

Commit

Permalink
Jade, code clean up around the eigenvectors
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinhughes27 committed Jul 24, 2013
1 parent f499939 commit 41e938b
Showing 1 changed file with 5 additions and 9 deletions.
14 changes: 5 additions & 9 deletions src/shogun/converter/ica/Jade.cpp
Expand Up @@ -83,21 +83,17 @@ CFeatures* CJade::apply(CFeatures* features)
SelfAdjointEigenSolver<EMatrix> eig;
eig.compute(cov);

EMatrix eigenvectors = eig.eigenvectors();
EMatrix eigenvalues = eig.eigenvalues().asDiagonal();

#ifdef DEBUG_JADE
std::cout << "eigenvectors" << std::endl;
std::cout << eigenvectors << std::endl;
std::cout << eig.eigenvectors() << std::endl;

std::cout << "eigenvalues" << std::endl;
std::cout << eigenvalues << std::endl;
std::cout << eig.eigenvalues().asDiagonal() << std::endl;
#endif

// Scaling
EMatrix B = eigenvectors.transpose();
EVector scales = eigenvalues.diagonal().cwiseSqrt();
B = scales.cwiseInverse().asDiagonal() * B;
EVector scales = eig.eigenvalues().cwiseSqrt();
EMatrix B = scales.cwiseInverse().asDiagonal() * eig.eigenvectors().transpose();

#ifdef DEBUG_JADE
std::cout << "whitener" << std::endl;
Expand Down Expand Up @@ -130,7 +126,7 @@ CFeatures* CJade::apply(CFeatures* features)
{
Xjm = SPX.row(jm);
Xijm = Xim.cwiseProduct(Xjm);
Qij =SPX.cwiseProduct(Xijm.replicate(1,m).transpose()) * SPX.transpose() / (float)T - R.col(im)*R.col(jm).transpose() - R.col(jm)*R.col(im).transpose();
Qij = SPX.cwiseProduct(Xijm.replicate(1,m).transpose()) * SPX.transpose() / (float)T - R.col(im)*R.col(jm).transpose() - R.col(jm)*R.col(im).transpose();
CM.block(0,Range,m,m) = sqrt(2)*Qij;
Range = Range + m;
}
Expand Down

0 comments on commit 41e938b

Please sign in to comment.