Xmipp
v3.23.11-Nereus
xmippCore
core
linear_system_helper.h
Go to the documentation of this file.
1
/***************************************************************************
2
*
3
* Authors: David Strelak (davidstrelak@gmail.com)
4
*
5
* Unidad de Bioinformatica of Centro Nacional de Biotecnologia , CSIC
6
*
7
* This program is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 2 of the License, or
10
* (at your option) any later version.
11
*
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with this program; if not, write to the Free Software
19
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20
* 02111-1307 USA
21
*
22
* All comments concerning this program package may be sent to the
23
* e-mail address 'xmipp@cnb.csic.es'
24
***************************************************************************/
25
26
#ifndef XMIPPCORE_CORE_LINEAR_SYSTEM_HELPER_H_
27
#define XMIPPCORE_CORE_LINEAR_SYSTEM_HELPER_H_
28
29
#include "
matrix1d.h
"
30
#include "
matrix2d.h
"
31
33
class
PseudoInverseHelper
34
{
35
public
:
36
Matrix2D<double>
A
,
AtA
,
AtAinv
;
37
Matrix1D<double>
Atb
,
b
,
bpredicted
;
38
};
39
41
class
WeightedLeastSquaresHelper
:
public
PseudoInverseHelper
42
{
43
public
:
44
Matrix1D<double>
w
;
//Weights
45
};
46
47
class
WeightedLeastSquaresHelperMany
48
{
49
public
:
50
Matrix2D<double>
A
;
51
Matrix2D<double>
At
;
52
std::vector<Matrix1D<double>>
bs
;
53
Matrix1D<double>
w
;
//Weights
54
Matrix1D<double>
w_sqrt
;
//Square roots of weights, will be computed
55
Matrix2D<double>
AtA
;
56
Matrix2D<double>
AtAinv
;
57
Matrix1D<double>
Atb
;
58
};
59
66
// FIXME deprecated
67
void
solveLinearSystem
(
PseudoInverseHelper
&h,
Matrix1D<double>
&result);
68
71
void
solveLinearSystem
(
WeightedLeastSquaresHelperMany
&h, std::vector<
Matrix1D<double>
> &result);
72
83
// FIXME deprecated
84
void
weightedLeastSquares
(
WeightedLeastSquaresHelper
&h,
Matrix1D<double>
&result);
85
92
void
weightedLeastSquares
(
WeightedLeastSquaresHelperMany
&h, std::vector<
Matrix1D<double>
> &results);
93
99
void
ransacWeightedLeastSquares
(
WeightedLeastSquaresHelper
&h,
Matrix1D<double>
&result,
100
double
tol,
int
Niter=10000,
double
outlierFraction=0.25,
int
Nthreads=1);
101
102
#endif
/* XMIPPCORE_CORE_LINEAR_SYSTEM_HELPER_H_ */
WeightedLeastSquaresHelperMany::Atb
Matrix1D< double > Atb
Definition:
linear_system_helper.h:57
WeightedLeastSquaresHelper::w
Matrix1D< double > w
Definition:
linear_system_helper.h:44
ransacWeightedLeastSquares
void ransacWeightedLeastSquares(WeightedLeastSquaresHelper &h, Matrix1D< double > &result, double tol, int Niter=10000, double outlierFraction=0.25, int Nthreads=1)
Definition:
linear_system_helper.cpp:332
PseudoInverseHelper::AtAinv
Matrix2D< double > AtAinv
Definition:
linear_system_helper.h:36
PseudoInverseHelper::Atb
Matrix1D< double > Atb
Definition:
linear_system_helper.h:37
solveLinearSystem
void solveLinearSystem(PseudoInverseHelper &h, Matrix1D< double > &result)
Definition:
linear_system_helper.cpp:33
WeightedLeastSquaresHelperMany::bs
std::vector< Matrix1D< double > > bs
Definition:
linear_system_helper.h:52
WeightedLeastSquaresHelperMany::w_sqrt
Matrix1D< double > w_sqrt
Definition:
linear_system_helper.h:54
Matrix2D< double >
weightedLeastSquares
void weightedLeastSquares(WeightedLeastSquaresHelper &h, Matrix1D< double > &result)
Definition:
linear_system_helper.cpp:119
PseudoInverseHelper::b
Matrix1D< double > b
Definition:
linear_system_helper.h:37
PseudoInverseHelper::bpredicted
Matrix1D< double > bpredicted
Definition:
linear_system_helper.h:37
PseudoInverseHelper::A
Matrix2D< double > A
Definition:
linear_system_helper.h:36
matrix1d.h
WeightedLeastSquaresHelperMany::AtA
Matrix2D< double > AtA
Definition:
linear_system_helper.h:55
WeightedLeastSquaresHelperMany::AtAinv
Matrix2D< double > AtAinv
Definition:
linear_system_helper.h:56
PseudoInverseHelper
Definition:
linear_system_helper.h:33
WeightedLeastSquaresHelperMany::w
Matrix1D< double > w
Definition:
linear_system_helper.h:53
matrix2d.h
WeightedLeastSquaresHelper
Definition:
linear_system_helper.h:41
WeightedLeastSquaresHelperMany
Definition:
linear_system_helper.h:47
WeightedLeastSquaresHelperMany::At
Matrix2D< double > At
Definition:
linear_system_helper.h:51
PseudoInverseHelper::AtA
Matrix2D< double > AtA
Definition:
linear_system_helper.h:36
Matrix1D< double >
WeightedLeastSquaresHelperMany::A
Matrix2D< double > A
Definition:
linear_system_helper.h:50
Generated by
1.8.13