Xmipp  v3.23.11-Nereus
Public Member Functions | Public Attributes | Protected Member Functions | List of all members

#include <ltsa.h>

Inheritance diagram for LTSA:
Inheritance graph
[legend]
Collaboration diagram for LTSA:
Collaboration graph
[legend]

Public Member Functions

void setSpecificParameters (int k=12)
 Set specific parameters. More...
 
virtual void reduceDimensionality ()
 Reduce dimensionality. More...
 
- Public Member Functions inherited from DimRedAlgorithm
 DimRedAlgorithm ()
 Empty constructor. More...
 
void setInputData (Matrix2D< double > &X)
 Set input data. More...
 
void setOutputDimensionality (size_t outputDim)
 Set output dimensionality. More...
 
const Matrix2D< double > & getReducedData ()
 Get reduced data. More...
 

Public Attributes

int k
 
- Public Attributes inherited from DimRedAlgorithm
Matrix2D< double > * X
 Pointer to input data. More...
 
size_t outputDim
 Output dim. More...
 
Matrix2D< double > Y
 Output data. More...
 
DimRedDistance2 distance
 Distance function. More...
 
FileName fnMapping
 Save mapping. More...
 

Protected Member Functions

void computeAlignmentMatrix (Matrix2D< double > &B)
 Common part. More...
 

Detailed Description

Class for making a LTSA dimensionality reduction

Definition at line 36 of file ltsa.h.

Member Function Documentation

◆ computeAlignmentMatrix()

void LTSA::computeAlignmentMatrix ( Matrix2D< double > &  B)
protected

Common part.

Definition at line 56 of file ltsa.cpp.

57 {
59 
60  size_t n = MAT_YSIZE(*X);
63  kNearestNeighbours(*X, k, ni, D);
64  Matrix2D<double> Xi(MAT_XSIZE(ni), MAT_XSIZE(*X)), W, Vi, Vi2, Si, Gi;
65 
66  B.initIdentity(n);
67  Matrix1D<int> weightVector;
68  for (size_t iLoop = 0; iLoop < n; ++iLoop)
69  {
70  extractNearestNeighbours(*X, ni, iLoop, Xi);
72 
73  matrixOperation_AAt(Xi, W); // W=X*X^t
74  schur(W, Vi, Si); // W=Vi*Si*Vi^t
75 
76  computeWeightsVector(Si, weightVector);
77 
78  Vi2.resizeNoCopy(MAT_YSIZE(Vi), outputDim + 1);
79  Vi2.setConstantCol(0, 1/sqrt(k)); //Vi2(0,:)=1/sqrt(k)
80  getLessWeightNColumns(Vi, weightVector, Vi2);
81 
82  matrixOperation_AAt(Vi2, Gi); // Gi=Vi2*Vi2^t
83  matrixOperation_IminusA(Gi); // Gi=I-Gi
84 
85  // Compute partial B with correlation matrix Gi
87  MAT_ELEM(B, MAT_ELEM(ni,iLoop,i), MAT_ELEM(ni,iLoop,j)) += MAT_ELEM(Gi, i, j);
88  MAT_ELEM(B, iLoop, iLoop)-=1;
89  }
90 }
#define FOR_ALL_ELEMENTS_IN_MATRIX2D(m)
Definition: matrix2d.h:104
#define MAT_YSIZE(m)
Definition: matrix2d.h:124
void subtractColumnMeans(Matrix2D< double > &A)
Definition: matrix2d.cpp:230
void setConstantCol(size_t j, T v)
Definition: matrix2d.h:1028
void kNearestNeighbours(const Matrix2D< double > &X, int K, Matrix2D< int > &idx, Matrix2D< double > &distance, DimRedDistance2 f, bool computeSqrt)
void sqrt(Image< double > &op)
Matrix2D< double > * X
Pointer to input data.
Definition: dimred_tools.h:141
void extractNearestNeighbours(const Matrix2D< double > &X, Matrix2D< int > &idx, int i, Matrix2D< double > &Xi)
void matrixOperation_IminusA(Matrix2D< double > &A)
Definition: matrix2d.cpp:533
#define i
void getLessWeightNColumns(const Matrix2D< double > &A, const Matrix1D< int > &weightVector, Matrix2D< double > &B)
Definition: ltsa.cpp:43
void resizeNoCopy(int Ydim, int Xdim)
Definition: matrix2d.h:534
void matrixOperation_AAt(const Matrix2D< double > &A, Matrix2D< double > &C)
Definition: matrix2d.cpp:449
size_t outputDim
Output dim.
Definition: dimred_tools.h:144
#define MAT_ELEM(m, i, j)
Definition: matrix2d.h:116
void computeWeightsVector(const Matrix2D< double > &A, Matrix1D< int > &weightVector)
Definition: ltsa.cpp:31
int ni
void schur(const Matrix2D< double > &M, Matrix2D< double > &O, Matrix2D< double > &T)
Definition: matrix2d.cpp:251
#define j
#define MAT_XSIZE(m)
Definition: matrix2d.h:120
int k
Definition: ltsa.h:39
int * n
void initIdentity()
Definition: matrix2d.h:673

◆ reduceDimensionality()

void LTSA::reduceDimensionality ( )
virtual

Reduce dimensionality.

Implements DimRedAlgorithm.

Reimplemented in LLTSA.

Definition at line 92 of file ltsa.cpp.

93 {
96 
97  Matrix1D<double> DEigs;
98  eigsBetween(B, 1, outputDim, DEigs, Y);
99 }
void eigsBetween(const Matrix2D< double > &A, size_t I1, size_t I2, Matrix1D< double > &D, Matrix2D< double > &P)
Definition: matrix2d.cpp:324
Matrix2D< double > Y
Output data.
Definition: dimred_tools.h:147
size_t outputDim
Output dim.
Definition: dimred_tools.h:144
void computeAlignmentMatrix(Matrix2D< double > &B)
Common part.
Definition: ltsa.cpp:56

◆ setSpecificParameters()

void LTSA::setSpecificParameters ( int  k = 12)

Set specific parameters.

Definition at line 26 of file ltsa.cpp.

27 {
28  this->k = k;
29 }
int k
Definition: ltsa.h:39

Member Data Documentation

◆ k

int LTSA::k

Definition at line 39 of file ltsa.h.


The documentation for this class was generated from the following files: