Xmipp  v3.23.11-Nereus
Functions
ltsa.cpp File Reference
#include "ltsa.h"
Include dependency graph for ltsa.cpp:

Go to the source code of this file.

Functions

void computeWeightsVector (const Matrix2D< double > &A, Matrix1D< int > &weightVector)
 
void getLessWeightNColumns (const Matrix2D< double > &A, const Matrix1D< int > &weightVector, Matrix2D< double > &B)
 

Function Documentation

◆ computeWeightsVector()

void computeWeightsVector ( const Matrix2D< double > &  A,
Matrix1D< int > &  weightVector 
)

Definition at line 31 of file ltsa.cpp.

32 {
33  weightVector.initZeros(MAT_XSIZE(A));
34  for (size_t i = 0; i < MAT_XSIZE(A); ++i)
35  {
36  double diagelem = MAT_ELEM(A, i, i);
37  for (size_t j = 0; j < MAT_XSIZE(A); ++j)
38  if (((i != j) && (MAT_ELEM(A, j, j) > diagelem)) || ((MAT_ELEM(A, j, j) == diagelem) && (j < i)))
39  VEC_ELEM(weightVector,i)++;
40  }
41 }
#define VEC_ELEM(v, i)
Definition: matrix1d.h:245
#define i
#define MAT_ELEM(m, i, j)
Definition: matrix2d.h:116
void initZeros()
Definition: matrix1d.h:592
#define j
#define MAT_XSIZE(m)
Definition: matrix2d.h:120

◆ getLessWeightNColumns()

void getLessWeightNColumns ( const Matrix2D< double > &  A,
const Matrix1D< int > &  weightVector,
Matrix2D< double > &  B 
)

Definition at line 43 of file ltsa.cpp.

44 {
45  size_t outputDim = MAT_XSIZE(B) - 1;
46  for (size_t index = 0; index < outputDim; ++index)
47  FOR_ALL_ELEMENTS_IN_MATRIX1D(weightVector)
48  if (VEC_ELEM(weightVector,i) == index)
49  {
50  for (size_t j = 0; j < MAT_YSIZE(A); ++j)
51  MAT_ELEM(B, j, index + 1) = MAT_ELEM(A, j, i);
52  break;
53  }
54 }
#define MAT_YSIZE(m)
Definition: matrix2d.h:124
#define VEC_ELEM(v, i)
Definition: matrix1d.h:245
#define i
#define MAT_ELEM(m, i, j)
Definition: matrix2d.h:116
#define FOR_ALL_ELEMENTS_IN_MATRIX1D(v)
Definition: matrix1d.h:72
viol index
#define j
#define MAT_XSIZE(m)
Definition: matrix2d.h:120