データ構造 | |
struct | mist::matrix_style |
行列計算をする際の入力となる行列の形式 [詳細] |
関数 | |
template<class T , class Allocator > | |
bool | mist::multiply (const matrix< T, Allocator > &a, const matrix< T, Allocator > &b, matrix< T, Allocator > &c, bool a_is_transpose, bool b_is_transpose, typename matrix< T, Allocator >::value_type alpha, typename matrix< T, Allocator >::value_type beta) |
行列×行列の演算を行う | |
template<class T , class Allocator > | |
bool | mist::multiply (const matrix< T, Allocator > &a, const matrix< T, Allocator > &b, matrix< T, Allocator > &c, bool a_is_transpose=false, bool b_is_transpose=false) |
行列×行列の演算を行う | |
template<class T1 , class T2 , class Allocator1 , class Allocator2 > | |
void | mist::permutation_matrix (const matrix< T1, Allocator1 > &pivot, matrix< T2, Allocator2 > &out) |
LU分解などで得られるピボット配列からピボット行列を作成 | |
template<class T , class Allocator > | |
const matrix< T, Allocator > ::value_type | mist::trace (const matrix< T, Allocator > &a) |
トレースの計算(対角成分の和) | |
template<class T , class Allocator > | |
const matrix< T, Allocator > ::value_type | mist::det (const matrix< T, Allocator > &a, matrix_style::style style=matrix_style::ge) |
行列式の計算 | |
template<class T , class Allocator > | |
const matrix< T, Allocator > & | mist::solve (const matrix< T, Allocator > &a, matrix< T, Allocator > &b, matrix_style::style style=matrix_style::ge) |
行列の連立一次方程式を解く関数 | |
template<class T , class Allocator1 , class Allocator2 > | |
const matrix< T, Allocator1 > | mist::lu_factorization (const matrix< T, Allocator1 > &a, matrix< __clapack__::integer, Allocator2 > &pivot, matrix_style::style style=matrix_style::ge) |
行列のLU分解を行う | |
template<class T , class Allocator > | |
bool | mist::lu_factorization (const matrix< T, Allocator > &a, matrix< T, Allocator > &L, matrix< T, Allocator > &U, matrix< T, Allocator > &pivot, matrix_style::style style=matrix_style::ge) |
行列のLU分解を行う | |
template<class T , class Allocator > | |
const matrix< T, Allocator > | mist::lu_factorization (const matrix< T, Allocator > &a, matrix_style::style style=matrix_style::ge) |
行列のLU分解を行う | |
template<class T , class Allocator > | |
const matrix< T, Allocator > | mist::cholesky_factorization (const matrix< T, Allocator > &a, matrix_style::style style=matrix_style::sy) |
対称行列のコレスキー分解を行う | |
template<class T , class Allocator > | |
void | mist::qr_factorization (const matrix< T, Allocator > &a, matrix< T, Allocator > &Q, matrix< T, Allocator > &R, matrix_style::style style=matrix_style::ge) |
行列のQR分解を行う | |
template<class T , class Allocator > | |
matrix< T, Allocator > | mist::inverse (const matrix< T, Allocator > &a, matrix_style::style style=matrix_style::ge) |
行列の逆行列をLU分解を用いて計算する | |
template<class T , class Allocator > | |
const matrix< T, Allocator > & | mist::eigen (const matrix< T, Allocator > &a, matrix< T, Allocator > &eigen_value, matrix< T, Allocator > &eigen_vector, matrix_style::style style=matrix_style::ge) |
行列の固有値・固有ベクトルを計算する | |
template<class T1 , class T2 , class Allocator1 , class Allocator2 > | |
const matrix< T2, Allocator2 > & | mist::svd (const matrix< T1, Allocator1 > &a, matrix< T1, Allocator1 > &u, matrix< T2, Allocator2 > &s, matrix< T1, Allocator1 > &vt, matrix_style::style style=matrix_style::ge) |
行列の特異値分解を計算する | |
template<class T1 , class T2 , class Allocator1 , class Allocator2 > | |
const matrix< T2, Allocator2 > & | mist::svd (const matrix< T1, Allocator1 > &a, matrix< T2, Allocator2 > &s, matrix< T1, Allocator1 > &vt, matrix_style::style style=matrix_style::ge) |
行列の特異値分解を計算する |
const matrix< T, Allocator > mist::cholesky_factorization | ( | const matrix< T, Allocator > & | a, |
matrix_style::style | style = matrix_style::sy |
||
) |
対称行列のコレスキー分解を行う
[in] | a | … 入力対称行列 |
[in] | style | … 入力行列の形式(デフォルトは一般行列を指定) |
|
inline |
行列式の計算
[in] | a | … 入力行列 |
[in] | style | … 入力行列の形式(デフォルトは一般行列を指定) |
参照先 mist::matrix< T, Allocator >::cols(), mist::array< T, Allocator >::empty(), mist::lu_factorization(), mist::matrix< T, Allocator >::rows(), と mist::array< T, Allocator >::size().
const matrix< T, Allocator >& mist::eigen | ( | const matrix< T, Allocator > & | a, |
matrix< T, Allocator > & | eigen_value, | ||
matrix< T, Allocator > & | eigen_vector, | ||
matrix_style::style | style = matrix_style::ge |
||
) |
行列の固有値・固有ベクトルを計算する
計算結果は,_DESCENDING_ORDER_EIGEN_VALUE_ の値によって,固有値が昇順・降順のどちらかで並ぶように変換される
[in] | a | … 入力行列 ![]() |
[out] | eigen_value | … 固有値が昇順・降順のどちらかで入ったベクトル ![]() |
[out] | eigen_vector | … 固有値の昇順・降順のどちらかに対応し,左から固有ベクトルが並んだ行列 ![]() |
[in] | style | … 入力行列の形式(デフォルトは一般行列を指定) |
参照先 mist::matrix< T, Allocator >::rows(), と mist::array< T, Allocator >::size().
matrix< T, Allocator > mist::inverse | ( | const matrix< T, Allocator > & | a, |
matrix_style::style | style = matrix_style::ge |
||
) |
行列の逆行列をLU分解を用いて計算する
正方行列で無い場合は,特異値分解を用いて一般化逆行列を計算する
[in] | a | … 入力行列 |
[in] | style | … 入力行列の形式(デフォルトは一般行列を指定) |
参照先 mist::matrix< T, Allocator >::cols(), mist::matrix< T, Allocator >::rows(), と mist::svd().
参照元 mist::Tsai::calibration(), mist::nearest::transform(), mist::linear::transform(), と mist::cubic::transform().
const matrix< T, Allocator1 > mist::lu_factorization | ( | const matrix< T, Allocator1 > & | a, |
matrix< __clapack__::integer, Allocator2 > & | pivot, | ||
matrix_style::style | style = matrix_style::ge |
||
) |
行列のLU分解を行う
[in] | a | … 入力行列 |
[out] | pivot | … ピボット選択を行った結果を代入するベクトル |
[in] | style | … 入力行列の形式(デフォルトは一般行列を指定) |
参照元 mist::det(), と mist::lu_factorization().
bool mist::lu_factorization | ( | const matrix< T, Allocator > & | a, |
matrix< T, Allocator > & | L, | ||
matrix< T, Allocator > & | U, | ||
matrix< T, Allocator > & | pivot, | ||
matrix_style::style | style = matrix_style::ge |
||
) |
行列のLU分解を行う
[in] | a | … 入力行列 ![]() |
[out] | L | … 下三角行列 ![]() |
[out] | U | … 上三角行列 ![]() |
[out] | pivot | … ピボット選択を行った結果を元に戻す行列 ![]() |
[in] | style | … 入力行列の形式(デフォルトは一般行列を指定) |
参照先 mist::matrix< T, Allocator >::cols(), mist::lu_factorization(), mist::permutation_matrix(), mist::matrix< T, Allocator >::resize(), と mist::matrix< T, Allocator >::rows().
const matrix< T, Allocator > mist::lu_factorization | ( | const matrix< T, Allocator > & | a, |
matrix_style::style | style = matrix_style::ge |
||
) |
行列のLU分解を行う
[in] | a | … 入力行列 |
[in] | style | … 入力行列の形式(デフォルトは一般行列を指定) |
参照先 mist::matrix< T, Allocator >::cols(), と mist::lu_factorization().
|
inline |
行列×行列の演算を行う
[in] | a | … 入力行列 ![]() |
[in] | b | … 入力行列 ![]() |
[out] | c | … 計算結果を出力する行列 ![]() |
[in] | a_is_transpose | … 行列 ![]() |
[in] | b_is_transpose | … 行列 ![]() |
[in] | alpha | … 行列演算の和を計算するときの係数 |
[in] | beta | … 行列演算の和を計算するときの係数 |
参照先 mist::matrix< T, Allocator >::cols(), mist::array< T, Allocator >::empty(), mist::array< T, Allocator >::fill(), mist::matrix< T, Allocator >::resize(), と mist::matrix< T, Allocator >::rows().
参照元 mist::multiply().
|
inline |
行列×行列の演算を行う
[in] | a | … 入力行列 ![]() |
[in] | b | … 入力行列 ![]() |
[out] | c | … 計算結果を出力する行列 ![]() |
[in] | a_is_transpose | … 行列 ![]() |
[in] | b_is_transpose | … 行列 ![]() |
参照先 mist::multiply().
|
inline |
LU分解などで得られるピボット配列からピボット行列を作成
[in] | pivot | … ピボット配列 |
[out] | out | … ピボット行列 |
参照先 mist::array< T, Allocator >::fill(), mist::matrix< T, Allocator >::resize(), と mist::array< T, Allocator >::size().
void mist::qr_factorization | ( | const matrix< T, Allocator > & | a, |
matrix< T, Allocator > & | Q, | ||
matrix< T, Allocator > & | R, | ||
matrix_style::style | style = matrix_style::ge |
||
) |
行列のQR分解を行う
[in] | a | … 入力行列 |
[out] | Q | … 行列Q |
[out] | R | … 行列R |
[in] | style | … 入力行列の形式(デフォルトは一般行列を指定) |
|
inline |
行列の連立一次方程式を解く関数
[in] | a | … 行列 ![]() |
[in,out] | b | … ベクトル ![]() |
[in] | style | … 入力行列の形式(デフォルトは一般行列を指定) |
const matrix< T2, Allocator2 >& mist::svd | ( | const matrix< T1, Allocator1 > & | a, |
matrix< T1, Allocator1 > & | u, | ||
matrix< T2, Allocator2 > & | s, | ||
matrix< T1, Allocator1 > & | vt, | ||
matrix_style::style | style = matrix_style::ge |
||
) |
行列の特異値分解を計算する
[in] | a | … 入力行列 ![]() |
[out] | u | … 列直行行列 ![]() |
[out] | s | … 対角行列 ![]() |
[out] | vt | … 直行行列の転置 ![]() |
[in] | style | … 入力行列の形式(デフォルトは一般行列を指定) |
参照元 compute_epipole(), compute_trifocal_tensor(), factorize_essential_matrix(), mist::homography_matrix(), mist::tensor< M, V, A >::hosvd(), mist::inverse(), mist::svd(), triangulation_dlt(), と trifocal_tensor_to_epipoles().
const matrix< T2, Allocator2 >& mist::svd | ( | const matrix< T1, Allocator1 > & | a, |
matrix< T2, Allocator2 > & | s, | ||
matrix< T1, Allocator1 > & | vt, | ||
matrix_style::style | style = matrix_style::ge |
||
) |
行列の特異値分解を計算する
の体格成分と
のみを計算する
[in] | a | … 入力行列 ![]() |
[out] | s | … 対角行列 ![]() |
[out] | vt | … 直行行列の転置 ![]() |
[in] | style | … 入力行列の形式(デフォルトは一般行列を指定) |
参照先 mist::svd().
|
inline |
トレースの計算(対角成分の和)
[in] | a | … 入力行列 |
参照先 mist::matrix< T, Allocator >::cols(), と mist::matrix< T, Allocator >::rows().