cisst-saw
Loading...
Searching...
No Matches
nmrLSISolver.h
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3
4/*
5
6 Author(s): Ankur Kapoor
7 Created on: 2004-10-30
8
9 (C) Copyright 2004-2013 Johns Hopkins University (JHU), All Rights
10 Reserved.
11
12--- begin cisst license - do not edit ---
13
14This software is provided "as is" under an open source license, with
15no warranty. The complete license can be found in license.txt and
16http://www.cisst.org/cisst/license.txt.
17
18--- end cisst license ---
19*/
20
21
26
27#ifndef _nmrLSISolver_h
28#define _nmrLSISolver_h
29
35
36
73 /* Uses lawson and hanson's SVD, which gives U^{T}B and V,
74 along with singular values */
75protected:
76 CISSTNETLIB_INTEGER Ma;
77 CISSTNETLIB_INTEGER Na;
78 CISSTNETLIB_INTEGER Mg;
80 vctDynamicMatrix<CISSTNETLIB_DOUBLE> GTilde; /* \tilde{G} = G*V*S^{-1} */
81 vctDynamicMatrix<CISSTNETLIB_DOUBLE> HTilde; /* \tilde{H} = h-G*V*S^{-1}*U^{T}*b */
84 vctDynamicMatrix<CISSTNETLIB_DOUBLE> Si; /* Dim(n, n) matrix of singular values inverse*/
85 vctDynamicMatrix<CISSTNETLIB_DOUBLE> VSi; /* matrix of V*S^{-1} */
88
89public:
95 Ma(0),
96 Na(0),
97 Mg(0)
98 {
99 Allocate(Ma, Na, Mg);
100 }
101
102
112 nmrLSISolver(CISSTNETLIB_INTEGER ma, CISSTNETLIB_INTEGER na, CISSTNETLIB_INTEGER mg) {
113 Allocate(ma, na, mg);
114 }
115
116
126
127
136 inline void Allocate(CISSTNETLIB_INTEGER ma, CISSTNETLIB_INTEGER na, CISSTNETLIB_INTEGER mg) {
137 Ma = ma;
138 Na = na;
139 Mg = mg;
140 VSiUtb.SetSize(std::max(Ma, Na), 1, VCT_COL_MAJOR);
141 GTilde.SetSize(Mg, Na, VCT_COL_MAJOR);
142 HTilde.SetSize(Mg, 1, VCT_COL_MAJOR);
143 Z.SetSize(Na, 1, VCT_COL_MAJOR);
144 X.SetSize(Na, 1, VCT_COL_MAJOR);
145 Si.SetSize(Na, Ma, VCT_COL_MAJOR);
146 VSi.SetSize(Na, Na, VCT_COL_MAJOR);
148 LDP.Allocate(Mg, Na);
149 }
150
151
160
161
177
179 inline const vctDynamicMatrix<CISSTNETLIB_DOUBLE> &GetX(void) const {
180 return X;
181 }
182};
183
184
185#endif // _nmrLSISolver_h
186
Definition nmrLDPSolver.h:72
void Allocate(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n)
Definition nmrLDPSolver.h:130
nmrLSISolver(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &C, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &d, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &b)
Definition nmrLSISolver.h:122
vctDynamicMatrix< CISSTNETLIB_DOUBLE > HTilde
Definition nmrLSISolver.h:81
CISST_EXPORT void Solve(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &C, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &d, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &b)
nmrLSISolver(void)
Definition nmrLSISolver.h:94
vctDynamicMatrix< CISSTNETLIB_DOUBLE > Z
Definition nmrLSISolver.h:82
CISSTNETLIB_INTEGER Ma
Definition nmrLSISolver.h:76
nmrSVDRSSolver SVDRS
Definition nmrLSISolver.h:86
vctDynamicMatrix< CISSTNETLIB_DOUBLE > GTilde
Definition nmrLSISolver.h:80
vctDynamicMatrix< CISSTNETLIB_DOUBLE > Si
Definition nmrLSISolver.h:84
vctDynamicMatrix< CISSTNETLIB_DOUBLE > VSi
Definition nmrLSISolver.h:85
vctDynamicMatrix< CISSTNETLIB_DOUBLE > VSiUtb
Definition nmrLSISolver.h:79
CISSTNETLIB_INTEGER Mg
Definition nmrLSISolver.h:78
vctDynamicMatrix< CISSTNETLIB_DOUBLE > X
Definition nmrLSISolver.h:83
void Allocate(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &C, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &d, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &b)
Definition nmrLSISolver.h:156
const vctDynamicMatrix< CISSTNETLIB_DOUBLE > & GetX(void) const
Definition nmrLSISolver.h:179
CISSTNETLIB_INTEGER Na
Definition nmrLSISolver.h:77
void Allocate(CISSTNETLIB_INTEGER ma, CISSTNETLIB_INTEGER na, CISSTNETLIB_INTEGER mg)
Definition nmrLSISolver.h:136
nmrLSISolver(CISSTNETLIB_INTEGER ma, CISSTNETLIB_INTEGER na, CISSTNETLIB_INTEGER mg)
Definition nmrLSISolver.h:112
nmrLDPSolver LDP
Definition nmrLSISolver.h:87
Definition nmrSVDRSSolver.h:116
void Allocate(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, CISSTNETLIB_INTEGER nb=1)
Definition nmrSVDRSSolver.h:171
Definition vctForwardDeclarations.h:157
#define CISST_EXPORT
Definition cmnExportMacros.h:50
Rules of exporting.
Declaration of nmrLDPSolver.
Declaration of nmrSVDRSSolver.
Declaration of vctDynamicMatrix.
const bool VCT_COL_MAJOR
Definition vctForwardDeclarations.h:44