ITK
6.0.0
Insight Toolkit
Loading...
Searching...
No Matches
itkEigenDecompositionSignConvention.h
Go to the documentation of this file.
1
/*=========================================================================
2
*
3
* Copyright NumFOCUS
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* https://www.apache.org/licenses/LICENSE-2.0.txt
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
*=========================================================================*/
18
#ifndef itkEigenDecompositionSignConvention_h
19
#define itkEigenDecompositionSignConvention_h
20
21
#include "vnl/vnl_matrix.h"
22
#include <cmath>
23
24
namespace
itk::detail
25
{
26
32
template
<
typename
T>
33
void
34
CanonicalizeEigenvectorColumnSigns
(vnl_matrix<T> & V)
35
{
36
const
unsigned
int
rows = V.rows();
37
for
(
unsigned
int
j = 0; j < V.cols(); ++j)
38
{
39
unsigned
int
pivot = 0;
40
for
(
unsigned
int
i = 1; i < rows; ++i)
41
{
42
if
(std::abs(V(i, j)) > std::abs(V(pivot, j)))
43
{
44
pivot = i;
45
}
46
}
47
if
(V(pivot, j) < T{ 0 })
48
{
49
V.scale_column(j, T{ -1 });
50
}
51
}
52
}
53
54
}
// namespace itk::detail
55
56
#endif
// itkEigenDecompositionSignConvention_h
itk::detail
Definition
itkEigenDecompositionSignConvention.h:25
itk::detail::CanonicalizeEigenvectorColumnSigns
void CanonicalizeEigenvectorColumnSigns(vnl_matrix< T > &V)
Definition
itkEigenDecompositionSignConvention.h:34
ITK
Modules
Core
Common
include
itkEigenDecompositionSignConvention.h
Generated on
unknown
for ITK by
1.13.2
Tarballs of release and nightly generated Doxygen documentation are available in the
InsightSoftwareConsortium/ITKDoxygen
GitHub Releases
.