ARCS6 AR6-REV.24062600
読み取り中…
検索中…
一致する文字列を見つけられません
ARCS::Matrix< NN, MM, TT > クラステンプレート

行列/ベクトル計算クラス(テンプレート版) [詳解]

#include <ARCS6/lib/Matrix.hh>

公開型

enum  LUperm { ODD , EVEN }
 LU分解の際の並べ替えが偶数回/奇数回発生したことを返すための定義 [詳解]
 

公開メンバ関数

constexpr Matrix ()
 コンストラクタ
 
constexpr Matrix (const TT InitValue)
 コンストラクタ(任意初期値版)
 
constexpr Matrix (std::initializer_list< TT > InitList)
 コンストラクタ(初期化リスト版)
 
constexpr Matrix (const Matrix &right)
 コピーコンストラクタ
 
constexpr auto & operator= (const Matrix &right)
 行列代入演算子
 
constexpr auto operator+ (void) const
 単項プラス演算子
 
constexpr auto operator- (void) const
 単項マイナス演算子
 
constexpr auto operator+ (const Matrix &right) const
 行列加算演算子 (行列同士の加算の場合)
 
constexpr auto operator+ (const TT &right) const
 行列加算演算子 (行列+スカラーの場合)
 
constexpr auto operator- (const Matrix &right) const
 行列減算演算子 (行列同士の減算の場合)
 
constexpr auto operator- (const TT &right) const
 行列減算演算子 (行列-スカラーの場合)
 
template<size_t Nright, size_t Mright, typename Tright >
constexpr auto operator* (const Matrix< Nright, Mright, Tright > &right) const
 行列乗算演算子 (行列同士の乗算の場合)
 
constexpr auto operator* (const TT &right) const
 行列乗算演算子 (行列*スカラーの場合)
 
constexpr auto operator/ (const TT &right) const
 行列スカラー除算演算子 (行列/スカラーの場合)
 
constexpr auto & operator+= (const Matrix &right)
 行列加算代入演算子 (行列=行列+行列の場合)
 
constexpr auto & operator+= (const TT &right)
 行列加算代入演算子 (行列=行列+スカラーの場合)
 
constexpr auto & operator-= (const Matrix &right)
 行列減算代入演算子 (行列=行列-行列の場合)
 
constexpr auto & operator-= (const TT &right)
 行列減算代入演算子 (行列=行列-スカラーの場合)
 
constexpr auto operator^ (const size_t &right) const
 行列べき乗演算子
 
constexpr auto operator& (const Matrix &right) const
 行列アダマール積演算子 (行列の要素ごとの乗算)
 
constexpr auto operator% (const Matrix &right) const
 行列アダマール除算演算子 (行列の要素ごとの除算)
 
constexpr TT operator[] (size_t m) const
 縦ベクトル添字演算子(縦ベクトルのm番目の要素の値を返す。GetElement(1,m)と同じ意味。ただしサイズチェックは行わない。)
 
constexpr TT & operator[] (size_t m)
 縦ベクトル添字演算子(縦ベクトルのm番目の要素に値を設定する。SetElement(1,n,val)と同じ意味。ただしサイズチェックは行わない。)
 
constexpr TT operator() (size_t m, size_t n) const
 行列括弧演算子(行列の(m,n)要素の値を返す。GetElem(m,n)と同じ意味。ただしサイズチェックは行わない。)
 
constexpr TT & operator() (size_t m, size_t n)
 行列括弧演算子(行列の(m,n)要素に値を設定する。SetElem(m,n,val)と同じ意味。ただしサイズチェックは行わない。)
 
template<typename T1 , typename... T2>
constexpr void Set (const T1 &u1, const T2 &... u2)
 行列要素に値を設定する関数
 
constexpr void Set ()
 
template<typename T1 , typename... T2>
constexpr void Get (T1 &u1, T2 &... u2)
 行列要素から値を読み込む関数
 
constexpr void Get ()
 
constexpr void LoadArray (const std::array< TT, MM > &Array)
 1次元std::array配列を縦ベクトルとして読み込む関数
 
constexpr void StoreArray (std::array< TT, MM > &Array) const
 縦ベクトルを1次元std::array配列に書き込む関数
 
constexpr void LoadArray (const std::array< std::array< TT, NN >, MM > &Array)
 2次元std::array配列を読み込む関数
 
template<size_t VM>
constexpr void LoadShortVector (const Matrix< 1, VM, TT > &v)
 短い縦ベクトルを読み込み,且つ残りはゼロで埋める関数
 
constexpr void SetElem (size_t m, size_t n, TT val)
 指定した要素番号に値を設定する関数 (並び順逆版)
 
constexpr TT GetElem (size_t m, size_t n) const
 指定した要素番号の値を返す関数 (並び順逆版)
 
constexpr void SetElement (size_t n, size_t m, TT val)
 指定した要素番号に値を設定する関数
 
constexpr TT GetElement (size_t n, size_t m) const
 指定した要素番号の値を返す関数
 
template<size_t VM>
constexpr Matrix< 1, VM, TT > GetVerticalVec (size_t n, size_t m)
 指定した先頭位置から縦ベクトルを抜き出して返す関数
 
template<size_t HN>
constexpr Matrix< HN, 1, TT > GetHorizontalVec (size_t n, size_t m)
 指定した先頭位置から横ベクトルを抜き出して返す関数
 
template<size_t VM>
constexpr void SetVerticalVec (Matrix< 1, VM, TT > v, size_t n, size_t m)
 指定した先頭位置に縦ベクトルを埋め込む関数
 
template<size_t HN>
constexpr void SetHorizontalVec (Matrix< HN, 1, TT > h, size_t n, size_t m)
 指定した先頭位置に横ベクトルを埋め込む関数
 
constexpr void FillAll (TT u)
 すべての要素を指定した値で埋める関数
 
constexpr void FillAllZero (void)
 すべての要素を指定したゼロで埋める関数
 
constexpr size_t GetWidthLength (void) const
 行列の幅(列数)を返す関数
 
constexpr size_t GetHeightLength (void) const
 行列の高さ(行数)を返す関数
 
constexpr bool isEnabledSIMD (void)
 MatrixクラスがSIMD命令が有効に設定されているかを返す関数
 
constexpr void real (const Matrix< NN, MM, double > &U)
 複素数行列要素の実数部に値をセットする関数
 

静的公開メンバ関数

static constexpr Matrix zeros (void)
 m行n列の零行列を返す関数
 
static constexpr Matrix ones (void)
 m行n列の要素がすべて1の行列を返す関数
 
static constexpr Matrix< NN, NN, TT > ident (void)
 n行n列の単位行列を返す関数
 
static constexpr Matrix< NN, NN, TT > eye (void)
 n行n列の単位行列を返す関数 (identのエイリアス)
 
static constexpr Matrix ramp (void)
 単調増加の縦ベクトルを返す関数
 
template<size_t PP, size_t QQ>
static constexpr void vecinv (const Matrix< NN, MM, TT > &v, Matrix< PP, QQ, TT > &Y)
 vec作用素の逆(縦ベクトル→行列)
 
template<size_t PP, size_t QQ>
static constexpr Matrix< PP, QQ, TT > vecinv (const Matrix< NN, MM, TT > &v)
 vec作用素の逆(縦ベクトル→行列)
 

公開変数類

std::array< std::array< TT, M >, NData
 データ格納用変数 配列要素の順番は Data[N列(横)][M行(縦)] なので注意
 

静的公開変数類

static constexpr size_t N = NN
 行列の幅(列の数, 横)
 
static constexpr size_t M = MM
 行列の高さ(行の数, 縦)
 

フレンド

constexpr friend Matrix operator+ (const TT &left, const Matrix &right)
 行列加算演算子 (スカラー+行列の場合)
 
constexpr friend Matrix operator- (const TT &left, const Matrix &right)
 行列減算演算子 (スカラー-行列の場合)
 
constexpr friend Matrix operator* (const TT &left, const Matrix &right)
 行列乗算演算子 (スカラー*行列の場合)
 
void PrintMatSize_Macro (const Matrix &u, const std::string &varname)
 行列のサイズの表示 (この関数はマクロを介して呼ばれることを想定している)
 
void PrintMatrix_Macro (const Matrix &u, const std::string &format, const std::string &varname)
 行列の要素を表示 (書式指定あり版,この関数はマクロを介して呼ばれることを想定している)
 
void PrintMat_Macro (const Matrix &u, const std::string &varname)
 行列の要素を表示 (書式指定なし版,この関数はマクロを介して呼ばれることを想定している)
 
constexpr friend Matrix< MM, NN, TT > tp (const Matrix< NN, MM, TT > &U)
 転置行列を返す関数
 
constexpr friend TT tr (const Matrix &U)
 行列のトレースを返す関数
 
constexpr friend TT prod (const Matrix &U)
 行列の対角要素の総積を返す関数
 
constexpr friend Matrix< 1, std::min(NN, MM), TT > diag (const Matrix &U)
 行列の対角要素を縦ベクトルで返す関数
 
constexpr friend Matrix< 1, MM, TT > sumrow (const Matrix &U)
 行方向(横方向)へ加算して縦ベクトルを出力する関数
 
constexpr friend Matrix< NN, 1, TT > sumcolumn (const Matrix &U)
 列方向(縦方向)へ加算して横ベクトルを出力する関数
 
constexpr friend double sumall (const Matrix &U)
 行列の全要素を加算して出力する関数
 
constexpr friend TT max (const Matrix &u)
 ベクトル要素の最大値を返す関数
 
constexpr friend TT absmax (const Matrix &u)
 ベクトル要素の絶対値の最大値を返す関数
 
constexpr friend size_t maxidx (const Matrix &u)
 ベクトル要素の最大値の要素番号を返す関数
 
constexpr friend size_t absmaxidx (const Matrix &u)
 ベクトル要素の絶対値の最大値の要素番号を返す関数
 
constexpr friend size_t nonzeroele (const Matrix &U)
 行列の非ゼロ要素数を返す関数
 
constexpr friend size_t rank (const Matrix &A)
 行列のランクを返す関数
 
constexpr friend Matrix< NN, 1, TT > getrow (const Matrix &U, size_t m)
 指定した行から横ベクトルとして抽出する関数
 
constexpr friend void setrow (Matrix &U, const Matrix< NN, 1, TT > &v, size_t m)
 指定した行を横ベクトルで上書きする関数
 
constexpr friend void setrow (Matrix &U, const std::array< TT, NN > &v, size_t m)
 指定した行を横ベクトル(std::array)で上書きする関数
 
constexpr friend void swaprow (Matrix &U, size_t m1, size_t m2)
 指定した行と行を入れ替える関数
 
constexpr friend void fillrow (Matrix &U, TT a, size_t m, size_t n1, size_t n2)
 m行目のn1列目からm2列目を数値aで埋める関数 (n1 <= n2 であること)
 
constexpr friend Matrix< 1, MM, TT > getcolumn (const Matrix &U, size_t n)
 指定した列から縦ベクトルとして抽出する関数
 
constexpr friend void setcolumn (Matrix &U, const Matrix< 1, MM, TT > &v, size_t n)
 指定した列を縦ベクトルで上書きする関数
 
constexpr friend void setcolumn (Matrix &U, const std::array< TT, MM > &v, size_t n)
 指定した列を縦ベクトル(std::array)で上書きする関数
 
constexpr friend void swapcolumn (Matrix &U, size_t n1, size_t n2)
 指定した列と列を入れ替える関数
 
constexpr friend void fillcolumn (Matrix &U, TT a, size_t n, size_t m1, size_t m2)
 n列目のm1行目からm2行目を数値aで埋める関数 (m1 <= m2 であること)
 
template<size_t VM>
constexpr friend void setvvector (Matrix< NN, MM, TT > &U, const Matrix< 1, VM, TT > &v, size_t n, size_t m)
 指定した列を縦ベクトルで指定位置に上書きする関数
 
template<size_t VM>
constexpr friend void getvvector (const Matrix< NN, MM, TT > &U, size_t n, size_t m, Matrix< 1, VM, TT > &v)
 指定した列から縦ベクトルを指定位置から抽出する関数
 
template<size_t VN>
constexpr friend void gethvector (const Matrix< NN, MM, TT > &U, size_t m, size_t n, Matrix< VN, 1, TT > &h)
 指定した行から横ベクトルを指定位置から抽出する関数
 
template<size_t SN, size_t SM>
constexpr friend void getsubmatrix (const Matrix< NN, MM, TT > &U, size_t n, size_t m, Matrix< SN, SM, TT > &Y)
 行列から指定位置の小行列を抽出する関数
 
template<size_t SN, size_t SM>
constexpr friend void setsubmatrix (Matrix< NN, MM, TT > &U, size_t n, size_t m, const Matrix< SN, SM, TT > &A)
 小行列を行列の指定位置に上書きする関数
 
constexpr friend Matrix orderrow (const Matrix &U, const Matrix< 1, MM, int > &v)
 並び替え記憶列ベクトルvの行番号に従って,入力行列Uの行を並び替える関数
 
constexpr friend Matrix reorderrow (const Matrix &U, const Matrix< 1, MM, int > &v)
 並び替え記憶列ベクトルvが昇順になるように,入力行列Uの行を並び替えて元に戻す関数
 
constexpr friend Matrix shiftup (const Matrix &U)
 行列の各要素を上に1行分シフトする関数(最下段の行はゼロになる)
 
constexpr friend Matrix shiftup (const Matrix &U, const size_t a)
 行列の各要素を上にa行分シフトする関数(最下段の行はゼロになる)
 
constexpr friend Matrix shiftdown (const Matrix &U)
 行列の各要素を下に1行分シフトする関数(最上段の行はゼロになる)
 
constexpr friend Matrix shiftdown (const Matrix &U, const size_t a)
 行列の各要素を下にa行分シフトする関数(最上段の行はゼロになる)
 
constexpr friend Matrix shiftright (const Matrix &U)
 行列の各要素を右に1列分シフトする関数(最左段の列はゼロになる)
 
constexpr friend Matrix shiftright (const Matrix &U, const size_t a)
 行列の各要素を右にa列分シフトする関数(最左段の列はゼロになる)
 
constexpr friend Matrix shiftleft (const Matrix &U)
 行列の各要素を左に1列分シフトする関数(最右段の列はゼロになる)
 
constexpr friend Matrix shiftleft (const Matrix &U, const size_t a)
 行列の各要素を左にa列分シフトする関数(最右段の列はゼロになる)
 
constexpr friend Matrix gettriup (const Matrix &U, const size_t k)
 行列のk番目より上の上三角部分を返す関数(下三角はゼロになる)
 
constexpr friend Matrix gettriup (const Matrix &U)
 行列の上三角部分を返す関数(下三角はゼロになる)
 
constexpr friend TT infnorm (const Matrix &U)
 行列の無限大ノルムを返す関数
 
constexpr friend TT euclidnorm (const Matrix< NN, MM, TT > &v)
 ベクトルのユークリッドノルムを返す関数
 
constexpr friend enum LUperm LU (const Matrix &A, Matrix &L, Matrix &U, Matrix< 1, MM, int > &v)
 LU分解
 
constexpr friend void Cholesky (const Matrix &A, Matrix &L, Matrix &D)
 修正コレスキー分解(LDL^T版)
 
constexpr friend void Cholesky (const Matrix &A, Matrix &L)
 修正コレスキー分解(LL^T版)
 
constexpr friend void QR (const Matrix< NN, MM, TT > &A, Matrix< MM, MM, TT > &Q, Matrix< NN, MM, TT > &R)
 QR分解 補足:実数型のときMATLABとはQとRの符号関係が逆の場合があるが正常なQR分解であることは確認済み 補足:複素数型のときMATLABとは全く違う値が得られるが,正常なQR分解であることは確認済み
 
constexpr friend void SVD (const Matrix< NN, MM, TT > &A, Matrix< MM, MM, TT > &U, Matrix< NN, MM, TT > &S, Matrix< NN, NN, TT > &V)
 SVD特異値分解(引数で返す版) 補足:MATLABとはU,S,Vの符号関係が入れ替わっている場合があるが正常なSVDであることは確認済み
 
constexpr friend std::tuple< Matrix< MM, MM, TT >, Matrix< NN, MM, TT >, Matrix< NN, NN, TT > > SVD (const Matrix< NN, MM, TT > &A)
 SVD特異値分解(タプルで返す版) 補足:MATLABとはU,S,Vの符号関係が入れ替わっている場合があるが正常なSVDであることは確認済み
 
constexpr friend void Schur (const Matrix< NN, MM, TT > &A, Matrix< NN, MM, TT > &Q, Matrix< NN, MM, TT > &U)
 Schur分解
 
constexpr friend void solve (const Matrix &A, const Matrix< 1, MM, TT > &b, Matrix< 1, NN, TT > &x)
 Ax = bの形の線形連立1次方程式をxについて解く関数(引数で返す版)
 
constexpr friend Matrix< 1, MM, TT > solve (const Matrix &A, const Matrix< 1, MM, TT > &b)
 Ax = bの形の線形連立1次方程式をxについて解く関数(戻り値として返す版)
 
constexpr friend void solve_upper_tri (const Matrix &U, const Matrix< 1, MM, TT > &b, Matrix< 1, NN, TT > &x)
 Uは上三角行列で,Ux = bの形の線形連立1次方程式をxについて解く関数(引数で返す版)
 
constexpr friend TT det (const Matrix &A)
 行列式の値を返す関数
 
constexpr friend Matrix inv (const Matrix &A)
 逆行列を返す関数 (正則チェック無し)
 
constexpr friend Matrix inv (const Matrix &A, size_t k)
 逆行列を返す関数 (正則チェック無し, 左上小行列のサイズ指定版)
 
constexpr friend Matrix inv_with_check (const Matrix &A)
 逆行列を返す関数 (正則チェック有り)
 
constexpr friend void inv_upper_tri (const Matrix &U, Matrix &Uinv)
 上三角行列の逆行列を返す関数
 
constexpr friend void inv_upper_tri (const Matrix &U, size_t k, Matrix &Uinv)
 上三角行列の逆行列を返す関数(左上小行列のサイズ指定版)
 
constexpr friend Matrix< MM, NN, TT > lpinv (const Matrix &A)
 左擬似逆行列を返す関数 (Aが縦長行列の場合)
 
constexpr friend Matrix< MM, NN, TT > lpinv (const Matrix &A, size_t k)
 左擬似逆行列を返す関数 (Aが縦長行列の場合, 左上小行列のサイズ指定版)
 
constexpr friend Matrix< MM, NN, TT > rpinv (const Matrix &A)
 右擬似逆行列を返す関数 (Aが横長行列の場合)
 
constexpr friend Matrix< MM, NN, TT > rpinv (const Matrix &A, size_t k)
 右擬似逆行列を返す関数 (Aが横長行列の場合, 左上小行列のサイズ指定版)
 
constexpr friend Matrix expm (const Matrix &U, size_t Order)
 行列指数関数 e^(U)
 
constexpr friend Matrix integral_expm (const Matrix &U, const TT T, const size_t DIV, const size_t P)
 指数行列の数値定積分[0,T]をする関数
 
constexpr friend Matrix expe (const Matrix &U)
 行列要素の指数関数を返す関数
 
constexpr friend Matrix loge (const Matrix &U)
 行列要素の自然対数を返す関数
 
constexpr friend Matrix abse (const Matrix &U)
 行列要素の絶対値を返す関数
 
constexpr friend Matrix sqrte (const Matrix &U)
 行列要素の平方根を返す関数
 
constexpr friend void sqrte (const Matrix &U, Matrix &Y)
 行列要素の平方根を参照で返す関数
 
constexpr friend Matrix tanhe (const Matrix &U)
 行列要素のtanhを返す関数
 
constexpr friend Matrix< NN, MM, double > reale (const Matrix &U)
 複素数行列要素の実数部を返す関数
 
constexpr friend Matrix< NN, MM, double > image (const Matrix &U)
 複素数行列要素の虚数部を返す関数
 
constexpr friend Matrix< NN, MM, double > mage (const Matrix &U)
 複素数行列要素の大きさを返す関数
 
constexpr friend Matrix< NN, MM, double > arge (const Matrix &U)
 複素数行列要素の偏角を返す関数
 
constexpr friend Matrix< NN, MM, std::complex< double > > conje (const Matrix &U)
 複素数行列要素の共役を返す関数
 
constexpr friend Matrix< MM, NN, std::complex< double > > Htp (const Matrix< NN, MM, TT > &U)
 エルミート転置行列を返す関数
 
constexpr friend Matrix< 1, NN, std::complex< double > > eigen (const Matrix< NN, MM, TT > &U)
 固有値を返す関数
 
constexpr friend Matrix< 1, NN, std::complex< double > > eigenvec (const Matrix< NN, MM, TT > &U)
 最大固有値の固有ベクトルを返す関数
 
template<size_t PP, size_t QQ>
constexpr friend Matrix< NN *PP, MM *QQ, TT > Kronecker (const Matrix< NN, MM, TT > &Ul, const Matrix< PP, QQ, TT > &Ur)
 クロネッカー積
 
constexpr friend Matrix< 1, NN *MM, TT > vec (const Matrix< NN, MM, TT > &U)
 vec作用素(行列→縦ベクトル)
 

詳解

template<size_t NN, size_t MM, typename TT = double>
class ARCS::Matrix< NN, MM, TT >

行列/ベクトル計算クラス(テンプレート版)

テンプレート引数
NN行列の幅
MM行列の高さ
TTデータ型(デフォルトはdouble型)

列挙型メンバ詳解

◆ LUperm

template<size_t NN, size_t MM, typename TT = double>
enum ARCS::Matrix::LUperm

LU分解の際の並べ替えが偶数回/奇数回発生したことを返すための定義

列挙値
ODD 

奇数

EVEN 

偶数

構築子と解体子

◆ Matrix() [1/2]

template<size_t NN, size_t MM, typename TT = double>
ARCS::Matrix< NN, MM, TT >::Matrix ( const TT InitValue)
inlineexplicitconstexpr

コンストラクタ(任意初期値版)

引数
[in]InitValue行列要素の初期値

◆ Matrix() [2/2]

template<size_t NN, size_t MM, typename TT = double>
ARCS::Matrix< NN, MM, TT >::Matrix ( std::initializer_list< TT > InitList)
inlineconstexpr

コンストラクタ(初期化リスト版)

引数
[in]InitList初期化リスト

関数詳解

◆ eye()

template<size_t NN, size_t MM, typename TT = double>
static constexpr Matrix< NN, NN, TT > ARCS::Matrix< NN, MM, TT >::eye ( void )
inlinestaticconstexpr

n行n列の単位行列を返す関数 (identのエイリアス)

戻り値
単位行列

◆ FillAll()

template<size_t NN, size_t MM, typename TT = double>
void ARCS::Matrix< NN, MM, TT >::FillAll ( TT u)
inlineconstexpr

すべての要素を指定した値で埋める関数

引数
[in]u埋める値

◆ Get()

template<size_t NN, size_t MM, typename TT = double>
template<typename T1 , typename... T2>
void ARCS::Matrix< NN, MM, TT >::Get ( T1 & u1,
T2 &... u2 )
inlineconstexpr

行列要素から値を読み込む関数

引数
[in]u1...u2要素の値

◆ GetElem()

template<size_t NN, size_t MM, typename TT = double>
TT ARCS::Matrix< NN, MM, TT >::GetElem ( size_t m,
size_t n ) const
inlineconstexpr

指定した要素番号の値を返す関数 (並び順逆版)

引数
[in]mm行目
[in]nn列目
戻り値
要素の値

◆ GetElement()

template<size_t NN, size_t MM, typename TT = double>
TT ARCS::Matrix< NN, MM, TT >::GetElement ( size_t n,
size_t m ) const
inlineconstexpr

指定した要素番号の値を返す関数

引数
[in]mm行目
[in]nn列目
戻り値
要素の値

◆ GetHeightLength()

template<size_t NN, size_t MM, typename TT = double>
size_t ARCS::Matrix< NN, MM, TT >::GetHeightLength ( void ) const
inlineconstexpr

行列の高さ(行数)を返す関数

戻り値
行列の幅

◆ GetHorizontalVec()

template<size_t NN, size_t MM, typename TT = double>
template<size_t HN>
Matrix< HN, 1, TT > ARCS::Matrix< NN, MM, TT >::GetHorizontalVec ( size_t n,
size_t m )
inlineconstexpr

指定した先頭位置から横ベクトルを抜き出して返す関数

引数
[in]mm行目
[in]nn列目
戻り値
横ベクトル

◆ GetVerticalVec()

template<size_t NN, size_t MM, typename TT = double>
template<size_t VM>
Matrix< 1, VM, TT > ARCS::Matrix< NN, MM, TT >::GetVerticalVec ( size_t n,
size_t m )
inlineconstexpr

指定した先頭位置から縦ベクトルを抜き出して返す関数

引数
[in]mm行目
[in]nn列目
戻り値
縦ベクトル

◆ GetWidthLength()

template<size_t NN, size_t MM, typename TT = double>
size_t ARCS::Matrix< NN, MM, TT >::GetWidthLength ( void ) const
inlineconstexpr

行列の幅(列数)を返す関数

戻り値
行列の幅

◆ ident()

template<size_t NN, size_t MM, typename TT = double>
static constexpr Matrix< NN, NN, TT > ARCS::Matrix< NN, MM, TT >::ident ( void )
inlinestaticconstexpr

n行n列の単位行列を返す関数

戻り値
単位行列

◆ isEnabledSIMD()

template<size_t NN, size_t MM, typename TT = double>
bool ARCS::Matrix< NN, MM, TT >::isEnabledSIMD ( void )
inlineconstexpr

MatrixクラスがSIMD命令が有効に設定されているかを返す関数

戻り値
SIMD有効 = true, SIMD無効 = false

◆ LoadArray() [1/2]

template<size_t NN, size_t MM, typename TT = double>
void ARCS::Matrix< NN, MM, TT >::LoadArray ( const std::array< std::array< TT, NN >, MM > & Array)
inlineconstexpr

2次元std::array配列を読み込む関数

引数
[in]Arraystd::array配列(横NN×縦MM)

◆ LoadArray() [2/2]

template<size_t NN, size_t MM, typename TT = double>
void ARCS::Matrix< NN, MM, TT >::LoadArray ( const std::array< TT, MM > & Array)
inlineconstexpr

1次元std::array配列を縦ベクトルとして読み込む関数

引数
[in]Arraystd::array配列(横1×縦MM)

◆ LoadShortVector()

template<size_t NN, size_t MM, typename TT = double>
template<size_t VM>
void ARCS::Matrix< NN, MM, TT >::LoadShortVector ( const Matrix< 1, VM, TT > & v)
inlineconstexpr

短い縦ベクトルを読み込み,且つ残りはゼロで埋める関数

引数
[in]v短い縦ベクトル

◆ ones()

template<size_t NN, size_t MM, typename TT = double>
static constexpr Matrix ARCS::Matrix< NN, MM, TT >::ones ( void )
inlinestaticconstexpr

m行n列の要素がすべて1の行列を返す関数

戻り値
1行列

◆ operator%()

template<size_t NN, size_t MM, typename TT = double>
auto ARCS::Matrix< NN, MM, TT >::operator% ( const Matrix< NN, MM, TT > & right) const
inlineconstexpr

行列アダマール除算演算子 (行列の要素ごとの除算)

引数
[in]right演算子の右側
戻り値
結果

◆ operator&()

template<size_t NN, size_t MM, typename TT = double>
auto ARCS::Matrix< NN, MM, TT >::operator& ( const Matrix< NN, MM, TT > & right) const
inlineconstexpr

行列アダマール積演算子 (行列の要素ごとの乗算)

引数
[in]right演算子の右側
戻り値
結果

◆ operator()() [1/2]

template<size_t NN, size_t MM, typename TT = double>
TT & ARCS::Matrix< NN, MM, TT >::operator() ( size_t m,
size_t n )
inlineconstexpr

行列括弧演算子(行列の(m,n)要素に値を設定する。SetElem(m,n,val)と同じ意味。ただしサイズチェックは行わない。)

引数
[in]mm行目
[in]nn列目
戻り値
設定後の行列

◆ operator()() [2/2]

template<size_t NN, size_t MM, typename TT = double>
TT ARCS::Matrix< NN, MM, TT >::operator() ( size_t m,
size_t n ) const
inlineconstexpr

行列括弧演算子(行列の(m,n)要素の値を返す。GetElem(m,n)と同じ意味。ただしサイズチェックは行わない。)

引数
[in]mm行目
[in]nn列目
戻り値
要素の値

◆ operator*() [1/2]

template<size_t NN, size_t MM, typename TT = double>
template<size_t Nright, size_t Mright, typename Tright >
auto ARCS::Matrix< NN, MM, TT >::operator* ( const Matrix< Nright, Mright, Tright > & right) const
inlineconstexpr

行列乗算演算子 (行列同士の乗算の場合)

引数
[in]right演算子の右側
戻り値
結果

◆ operator*() [2/2]

template<size_t NN, size_t MM, typename TT = double>
auto ARCS::Matrix< NN, MM, TT >::operator* ( const TT & right) const
inlineconstexpr

行列乗算演算子 (行列*スカラーの場合)

引数
[in]right演算子の右側
戻り値
結果

◆ operator+() [1/3]

template<size_t NN, size_t MM, typename TT = double>
auto ARCS::Matrix< NN, MM, TT >::operator+ ( const Matrix< NN, MM, TT > & right) const
inlineconstexpr

行列加算演算子 (行列同士の加算の場合)

引数
[in]right演算子の右側
戻り値
結果

◆ operator+() [2/3]

template<size_t NN, size_t MM, typename TT = double>
auto ARCS::Matrix< NN, MM, TT >::operator+ ( const TT & right) const
inlineconstexpr

行列加算演算子 (行列+スカラーの場合)

引数
[in]right演算子の右側
戻り値
結果

◆ operator+() [3/3]

template<size_t NN, size_t MM, typename TT = double>
auto ARCS::Matrix< NN, MM, TT >::operator+ ( void ) const
inlineconstexpr

単項プラス演算子

戻り値
結果

◆ operator+=() [1/2]

template<size_t NN, size_t MM, typename TT = double>
auto & ARCS::Matrix< NN, MM, TT >::operator+= ( const Matrix< NN, MM, TT > & right)
inlineconstexpr

行列加算代入演算子 (行列=行列+行列の場合)

引数
[in]right演算子の右側
戻り値
結果

◆ operator+=() [2/2]

template<size_t NN, size_t MM, typename TT = double>
auto & ARCS::Matrix< NN, MM, TT >::operator+= ( const TT & right)
inlineconstexpr

行列加算代入演算子 (行列=行列+スカラーの場合)

引数
[in]right演算子の右側
戻り値
結果

◆ operator-() [1/3]

template<size_t NN, size_t MM, typename TT = double>
auto ARCS::Matrix< NN, MM, TT >::operator- ( const Matrix< NN, MM, TT > & right) const
inlineconstexpr

行列減算演算子 (行列同士の減算の場合)

引数
[in]right演算子の右側
戻り値
結果

◆ operator-() [2/3]

template<size_t NN, size_t MM, typename TT = double>
auto ARCS::Matrix< NN, MM, TT >::operator- ( const TT & right) const
inlineconstexpr

行列減算演算子 (行列-スカラーの場合)

引数
[in]right演算子の右側
戻り値
結果

◆ operator-() [3/3]

template<size_t NN, size_t MM, typename TT = double>
auto ARCS::Matrix< NN, MM, TT >::operator- ( void ) const
inlineconstexpr

単項マイナス演算子

戻り値
結果

◆ operator-=() [1/2]

template<size_t NN, size_t MM, typename TT = double>
auto & ARCS::Matrix< NN, MM, TT >::operator-= ( const Matrix< NN, MM, TT > & right)
inlineconstexpr

行列減算代入演算子 (行列=行列-行列の場合)

引数
[in]right演算子の右側
戻り値
結果

◆ operator-=() [2/2]

template<size_t NN, size_t MM, typename TT = double>
auto & ARCS::Matrix< NN, MM, TT >::operator-= ( const TT & right)
inlineconstexpr

行列減算代入演算子 (行列=行列-スカラーの場合)

引数
[in]right演算子の右側
戻り値
結果

◆ operator/()

template<size_t NN, size_t MM, typename TT = double>
auto ARCS::Matrix< NN, MM, TT >::operator/ ( const TT & right) const
inlineconstexpr

行列スカラー除算演算子 (行列/スカラーの場合)

引数
[in]right演算子の右側
戻り値
結果

◆ operator=()

template<size_t NN, size_t MM, typename TT = double>
auto & ARCS::Matrix< NN, MM, TT >::operator= ( const Matrix< NN, MM, TT > & right)
inlineconstexpr

行列代入演算子

引数
[in]right演算子の右側
戻り値
結果

◆ operator[]() [1/2]

template<size_t NN, size_t MM, typename TT = double>
TT & ARCS::Matrix< NN, MM, TT >::operator[] ( size_t m)
inlineconstexpr

縦ベクトル添字演算子(縦ベクトルのm番目の要素に値を設定する。SetElement(1,n,val)と同じ意味。ただしサイズチェックは行わない。)

引数
[in]m要素番号(「1」始まり)
戻り値
設定後の縦ベクトル

◆ operator[]() [2/2]

template<size_t NN, size_t MM, typename TT = double>
TT ARCS::Matrix< NN, MM, TT >::operator[] ( size_t m) const
inlineconstexpr

縦ベクトル添字演算子(縦ベクトルのm番目の要素の値を返す。GetElement(1,m)と同じ意味。ただしサイズチェックは行わない。)

引数
[in]m要素番号(「1」始まり)
戻り値
要素の値

◆ operator^()

template<size_t NN, size_t MM, typename TT = double>
auto ARCS::Matrix< NN, MM, TT >::operator^ ( const size_t & right) const
inlineconstexpr

行列べき乗演算子

引数
[in]right演算子の右側
戻り値
結果

◆ ramp()

template<size_t NN, size_t MM, typename TT = double>
static constexpr Matrix ARCS::Matrix< NN, MM, TT >::ramp ( void )
inlinestaticconstexpr

単調増加の縦ベクトルを返す関数

戻り値
縦ベクトル

◆ real()

template<size_t NN, size_t MM, typename TT = double>
void ARCS::Matrix< NN, MM, TT >::real ( const Matrix< NN, MM, double > & U)
inlineconstexpr

複素数行列要素の実数部に値をセットする関数

引数
[in]U入力行列
戻り値
結果

◆ Set()

template<size_t NN, size_t MM, typename TT = double>
template<typename T1 , typename... T2>
void ARCS::Matrix< NN, MM, TT >::Set ( const T1 & u1,
const T2 &... u2 )
inlineconstexpr

行列要素に値を設定する関数

引数
[in]u1...u2要素の値

◆ SetElem()

template<size_t NN, size_t MM, typename TT = double>
void ARCS::Matrix< NN, MM, TT >::SetElem ( size_t m,
size_t n,
TT val )
inlineconstexpr

指定した要素番号に値を設定する関数 (並び順逆版)

引数
[in]mm行目
[in]nn列目
[in]valvalを代入

◆ SetElement()

template<size_t NN, size_t MM, typename TT = double>
void ARCS::Matrix< NN, MM, TT >::SetElement ( size_t n,
size_t m,
TT val )
inlineconstexpr

指定した要素番号に値を設定する関数

引数
[in]mm行目
[in]nn列目
[in]valvalを代入

◆ SetHorizontalVec()

template<size_t NN, size_t MM, typename TT = double>
template<size_t HN>
void ARCS::Matrix< NN, MM, TT >::SetHorizontalVec ( Matrix< HN, 1, TT > h,
size_t n,
size_t m )
inlineconstexpr

指定した先頭位置に横ベクトルを埋め込む関数

引数
[in]h横ベクトル
[in]mm行目
[in]nn列目

◆ SetVerticalVec()

template<size_t NN, size_t MM, typename TT = double>
template<size_t VM>
void ARCS::Matrix< NN, MM, TT >::SetVerticalVec ( Matrix< 1, VM, TT > v,
size_t n,
size_t m )
inlineconstexpr

指定した先頭位置に縦ベクトルを埋め込む関数

引数
[in]v縦ベクトル
[in]mm行目
[in]nn列目

◆ StoreArray()

template<size_t NN, size_t MM, typename TT = double>
void ARCS::Matrix< NN, MM, TT >::StoreArray ( std::array< TT, MM > & Array) const
inlineconstexpr

縦ベクトルを1次元std::array配列に書き込む関数

引数
[out]Arraystd::array配列(横1×縦MM)

◆ vecinv() [1/2]

template<size_t NN, size_t MM, typename TT = double>
template<size_t PP, size_t QQ>
static constexpr Matrix< PP, QQ, TT > ARCS::Matrix< NN, MM, TT >::vecinv ( const Matrix< NN, MM, TT > & v)
inlinestaticconstexpr

vec作用素の逆(縦ベクトル→行列)

テンプレート引数
PP再構成後の幅
QQ再構成後の高さ
引数
[in]v入力ベクトル
戻り値
再構成後の行列

◆ vecinv() [2/2]

template<size_t NN, size_t MM, typename TT = double>
template<size_t PP, size_t QQ>
static constexpr void ARCS::Matrix< NN, MM, TT >::vecinv ( const Matrix< NN, MM, TT > & v,
Matrix< PP, QQ, TT > & Y )
inlinestaticconstexpr

vec作用素の逆(縦ベクトル→行列)

テンプレート引数
PP再構成後の幅
QQ再構成後の高さ
引数
[in]v入力ベクトル
[in,out]Y再構成後の行列

◆ zeros()

template<size_t NN, size_t MM, typename TT = double>
static constexpr Matrix ARCS::Matrix< NN, MM, TT >::zeros ( void )
inlinestaticconstexpr

m行n列の零行列を返す関数

戻り値
零行列

フレンドと関連関数の詳解

◆ abse

template<size_t NN, size_t MM, typename TT = double>
friend Matrix abse ( const Matrix< NN, MM, TT > & U)
friend

行列要素の絶対値を返す関数

引数
[in]U入力行列
戻り値
結果

◆ absmax

template<size_t NN, size_t MM, typename TT = double>
friend TT absmax ( const Matrix< NN, MM, TT > & u)
friend

ベクトル要素の絶対値の最大値を返す関数

引数
[in]u入力ベクトル
戻り値
結果

◆ absmaxidx

template<size_t NN, size_t MM, typename TT = double>
friend size_t absmaxidx ( const Matrix< NN, MM, TT > & u)
friend

ベクトル要素の絶対値の最大値の要素番号を返す関数

引数
[in]u入力ベクトル
戻り値
結果

◆ arge

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< NN, MM, double > arge ( const Matrix< NN, MM, TT > & U)
friend

複素数行列要素の偏角を返す関数

引数
[in]U入力行列
戻り値
結果

◆ Cholesky [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend void Cholesky ( const Matrix< NN, MM, TT > & A,
Matrix< NN, MM, TT > & L )
friend

修正コレスキー分解(LL^T版)

引数
[in]A入力行列
[out]L下三角行列

◆ Cholesky [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend void Cholesky ( const Matrix< NN, MM, TT > & A,
Matrix< NN, MM, TT > & L,
Matrix< NN, MM, TT > & D )
friend

修正コレスキー分解(LDL^T版)

引数
[in]A入力行列
[out]L下三角行列
[out]D対角行列

◆ conje

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< NN, MM, std::complex< double > > conje ( const Matrix< NN, MM, TT > & U)
friend

複素数行列要素の共役を返す関数

引数
[in]U入力行列
戻り値
結果

◆ det

template<size_t NN, size_t MM, typename TT = double>
friend TT det ( const Matrix< NN, MM, TT > & A)
friend

行列式の値を返す関数

引数
[in]A入力行列
戻り値
結果

◆ diag

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< 1, std::min(NN, MM), TT > diag ( const Matrix< NN, MM, TT > & U)
friend

行列の対角要素を縦ベクトルで返す関数

引数
[in]U入力行列
戻り値
結果

◆ eigen

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< 1, NN, std::complex< double > > eigen ( const Matrix< NN, MM, TT > & U)
friend

固有値を返す関数

引数
[in]U入力行列
戻り値
結果

◆ eigenvec

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< 1, NN, std::complex< double > > eigenvec ( const Matrix< NN, MM, TT > & U)
friend

最大固有値の固有ベクトルを返す関数

引数
[in]U入力行列
戻り値
結果

◆ euclidnorm

template<size_t NN, size_t MM, typename TT = double>
friend TT euclidnorm ( const Matrix< NN, MM, TT > & v)
friend

ベクトルのユークリッドノルムを返す関数

引数
[in]v入力ベクトル
戻り値
結果

◆ expe

template<size_t NN, size_t MM, typename TT = double>
friend Matrix expe ( const Matrix< NN, MM, TT > & U)
friend

行列要素の指数関数を返す関数

引数
[in]U入力行列
戻り値
結果

◆ expm

template<size_t NN, size_t MM, typename TT = double>
friend Matrix expm ( const Matrix< NN, MM, TT > & U,
size_t Order )
friend

行列指数関数 e^(U)

引数
[in]U入力行列
[in]Orderパデ近似の次数
戻り値
結果

◆ fillcolumn

template<size_t NN, size_t MM, typename TT = double>
friend void fillcolumn ( Matrix< NN, MM, TT > & U,
TT a,
size_t n,
size_t m1,
size_t m2 )
friend

n列目のm1行目からm2行目を数値aで埋める関数 (m1 <= m2 であること)

引数
[in,out]U入出力行列
[in]a埋める値
[in]n指定列
[in]m1開始行
[in]m2終了行

◆ fillrow

template<size_t NN, size_t MM, typename TT = double>
friend void fillrow ( Matrix< NN, MM, TT > & U,
TT a,
size_t m,
size_t n1,
size_t n2 )
friend

m行目のn1列目からm2列目を数値aで埋める関数 (n1 <= n2 であること)

引数
[in,out]U入出力行列
[in]a埋める値
[in]m指定行
[in]n1開始列
[in]n2終了列

◆ getcolumn

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< 1, MM, TT > getcolumn ( const Matrix< NN, MM, TT > & U,
size_t n )
friend

指定した列から縦ベクトルとして抽出する関数

引数
[in]U入力行列
[in]n指定列
戻り値
結果

◆ gethvector

template<size_t NN, size_t MM, typename TT = double>
template<size_t VN>
friend void gethvector ( const Matrix< NN, MM, TT > & U,
size_t m,
size_t n,
Matrix< VN, 1, TT > & h )
friend

指定した行から横ベクトルを指定位置から抽出する関数

テンプレート引数
VM縦ベクトルの長さ
引数
[in]U入力行列
[in]m読み込みたい行
[in]n横方向の読み込む先頭位置
[out]h抽出した横ベクトル

◆ getrow

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< NN, 1, TT > getrow ( const Matrix< NN, MM, TT > & U,
size_t m )
friend

指定した行から横ベクトルとして抽出する関数

引数
[in]U入力行列
[in]m抽出したい行
戻り値
結果

◆ getsubmatrix

template<size_t NN, size_t MM, typename TT = double>
template<size_t SN, size_t SM>
friend void getsubmatrix ( const Matrix< NN, MM, TT > & U,
size_t n,
size_t m,
Matrix< SN, SM, TT > & Y )
friend

行列から指定位置の小行列を抽出する関数

テンプレート引数
SN小行列の幅
SM小行列の高さ
引数
[in]U入力行列
[in]n抽出する横位置(小行列の左)
[in]m抽出する縦位置(小行列の上)
[out]Y抽出した小行列

◆ gettriup [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix gettriup ( const Matrix< NN, MM, TT > & U)
friend

行列の上三角部分を返す関数(下三角はゼロになる)

引数
[in]U入力行列
戻り値
結果

◆ gettriup [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix gettriup ( const Matrix< NN, MM, TT > & U,
const size_t k )
friend

行列のk番目より上の上三角部分を返す関数(下三角はゼロになる)

引数
[in]U入力行列
[in]kk番目
戻り値
結果

◆ getvvector

template<size_t NN, size_t MM, typename TT = double>
template<size_t VM>
friend void getvvector ( const Matrix< NN, MM, TT > & U,
size_t n,
size_t m,
Matrix< 1, VM, TT > & v )
friend

指定した列から縦ベクトルを指定位置から抽出する関数

テンプレート引数
VM縦ベクトルの長さ
引数
[in]U入力行列
[in]n読み込みたい列
[in]m縦方向の読み込む先頭位置
[out]v抽出した縦ベクトル

◆ Htp

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< MM, NN, std::complex< double > > Htp ( const Matrix< NN, MM, TT > & U)
friend

エルミート転置行列を返す関数

引数
[in]U入力行列
戻り値
結果

◆ image

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< NN, MM, double > image ( const Matrix< NN, MM, TT > & U)
friend

複素数行列要素の虚数部を返す関数

引数
[in]U入力行列
戻り値
結果

◆ infnorm

template<size_t NN, size_t MM, typename TT = double>
friend TT infnorm ( const Matrix< NN, MM, TT > & U)
friend

行列の無限大ノルムを返す関数

引数
[in]U入力行列
戻り値
結果

◆ integral_expm

template<size_t NN, size_t MM, typename TT = double>
friend Matrix integral_expm ( const Matrix< NN, MM, TT > & U,
const TT T,
const size_t DIV,
const size_t P )
friend

指数行列の数値定積分[0,T]をする関数

引数
[in]U入力行列
[in]T積分範囲の終わり
[in]DIV分割数
[in]Pパデ近似の次数
戻り値
結果

◆ inv [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix inv ( const Matrix< NN, MM, TT > & A)
friend

逆行列を返す関数 (正則チェック無し)

引数
[in]A入力行列
戻り値
結果

◆ inv [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix inv ( const Matrix< NN, MM, TT > & A,
size_t k )
friend

逆行列を返す関数 (正則チェック無し, 左上小行列のサイズ指定版)

引数
[in]A入力行列 (kより右と下は全部ゼロ埋めを想定)
[in]k左上小行列のサイズ
戻り値
結果

◆ inv_upper_tri [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend void inv_upper_tri ( const Matrix< NN, MM, TT > & U,
Matrix< NN, MM, TT > & Uinv )
friend

上三角行列の逆行列を返す関数

引数
[in]U入力行列(上三角行列)
[out]Uinv逆行列

◆ inv_upper_tri [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend void inv_upper_tri ( const Matrix< NN, MM, TT > & U,
size_t k,
Matrix< NN, MM, TT > & Uinv )
friend

上三角行列の逆行列を返す関数(左上小行列のサイズ指定版)

引数
[in]U入力行列(上三角行列, kより右と下は全部ゼロ埋めを想定)
[in]k左上小行列のサイズ
[out]Uinv逆行列

◆ inv_with_check

template<size_t NN, size_t MM, typename TT = double>
friend Matrix inv_with_check ( const Matrix< NN, MM, TT > & A)
friend

逆行列を返す関数 (正則チェック有り)

引数
[in]A入力行列
戻り値
結果

◆ Kronecker

template<size_t NN, size_t MM, typename TT = double>
template<size_t PP, size_t QQ>
friend Matrix< NN *PP, MM *QQ, TT > Kronecker ( const Matrix< NN, MM, TT > & Ul,
const Matrix< PP, QQ, TT > & Ur )
friend

クロネッカー積

テンプレート引数
PP右側の幅
QQ右側の高さ
引数
[in]Ul演算子の左側
[in]Ur演算子の右側
戻り値
結果

◆ loge

template<size_t NN, size_t MM, typename TT = double>
friend Matrix loge ( const Matrix< NN, MM, TT > & U)
friend

行列要素の自然対数を返す関数

引数
[in]U入力行列
戻り値
結果

◆ lpinv [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< MM, NN, TT > lpinv ( const Matrix< NN, MM, TT > & A)
friend

左擬似逆行列を返す関数 (Aが縦長行列の場合)

引数
[in]A入力行列
戻り値
結果

◆ lpinv [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< MM, NN, TT > lpinv ( const Matrix< NN, MM, TT > & A,
size_t k )
friend

左擬似逆行列を返す関数 (Aが縦長行列の場合, 左上小行列のサイズ指定版)

引数
[in]A入力行列 (kより右と下は全部ゼロ埋めを想定)
[in]k左上小行列のサイズ
戻り値
結果

◆ LU

template<size_t NN, size_t MM, typename TT = double>
friend enum LUperm LU ( const Matrix< NN, MM, TT > & A,
Matrix< NN, MM, TT > & L,
Matrix< NN, MM, TT > & U,
Matrix< 1, MM, int > & v )
friend

LU分解

引数
[in]A入力行列
[out]L下三角行列
[out]U上三角行列
[out]v並べ替え記憶列ベクトル(int型)
戻り値
並べ替え回数が奇数か偶数かを返す

◆ mage

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< NN, MM, double > mage ( const Matrix< NN, MM, TT > & U)
friend

複素数行列要素の大きさを返す関数

引数
[in]U入力行列
戻り値
結果

◆ max

template<size_t NN, size_t MM, typename TT = double>
friend TT max ( const Matrix< NN, MM, TT > & u)
friend

ベクトル要素の最大値を返す関数

引数
[in]u入力ベクトル
戻り値
結果

◆ maxidx

template<size_t NN, size_t MM, typename TT = double>
friend size_t maxidx ( const Matrix< NN, MM, TT > & u)
friend

ベクトル要素の最大値の要素番号を返す関数

引数
[in]u入力ベクトル
戻り値
結果

◆ nonzeroele

template<size_t NN, size_t MM, typename TT = double>
friend size_t nonzeroele ( const Matrix< NN, MM, TT > & U)
friend

行列の非ゼロ要素数を返す関数

引数
[in]U入力行列
戻り値
結果

◆ operator*

template<size_t NN, size_t MM, typename TT = double>
friend Matrix operator* ( const TT & left,
const Matrix< NN, MM, TT > & right )
friend

行列乗算演算子 (スカラー*行列の場合)

引数
[in]left左側のスカラー値
[in]right右側の行列

◆ operator+

template<size_t NN, size_t MM, typename TT = double>
friend Matrix operator+ ( const TT & left,
const Matrix< NN, MM, TT > & right )
friend

行列加算演算子 (スカラー+行列の場合)

引数
[in]left左側のスカラー値
[in]right右側の行列

◆ operator-

template<size_t NN, size_t MM, typename TT = double>
friend Matrix operator- ( const TT & left,
const Matrix< NN, MM, TT > & right )
friend

行列減算演算子 (スカラー-行列の場合)

引数
[in]left左側のスカラー値
[in]right右側の行列

◆ orderrow

template<size_t NN, size_t MM, typename TT = double>
friend Matrix orderrow ( const Matrix< NN, MM, TT > & U,
const Matrix< 1, MM, int > & v )
friend

並び替え記憶列ベクトルvの行番号に従って,入力行列Uの行を並び替える関数

引数
[in]U入力行列
[in]v並び替え記憶列ベクトル
戻り値
結果

◆ PrintMat_Macro

template<size_t NN, size_t MM, typename TT = double>
void PrintMat_Macro ( const Matrix< NN, MM, TT > & u,
const std::string & varname )
friend

行列の要素を表示 (書式指定なし版,この関数はマクロを介して呼ばれることを想定している)

引数
[in]u表示する行列
[in]varname変数名

◆ PrintMatrix_Macro

template<size_t NN, size_t MM, typename TT = double>
void PrintMatrix_Macro ( const Matrix< NN, MM, TT > & u,
const std::string & format,
const std::string & varname )
friend

行列の要素を表示 (書式指定あり版,この関数はマクロを介して呼ばれることを想定している)

引数
[in]u表示する行列
[in]format表示形式 (%1.3e とか %5.3f とか printfと同じ)
[in]varname変数名

◆ PrintMatSize_Macro

template<size_t NN, size_t MM, typename TT = double>
void PrintMatSize_Macro ( const Matrix< NN, MM, TT > & u,
const std::string & varname )
friend

行列のサイズの表示 (この関数はマクロを介して呼ばれることを想定している)

引数
[in]u表示する行列
[in]varname変数名

◆ prod

template<size_t NN, size_t MM, typename TT = double>
friend TT prod ( const Matrix< NN, MM, TT > & U)
friend

行列の対角要素の総積を返す関数

引数
[in]U入力行列
戻り値
結果

◆ QR

template<size_t NN, size_t MM, typename TT = double>
friend void QR ( const Matrix< NN, MM, TT > & A,
Matrix< MM, MM, TT > & Q,
Matrix< NN, MM, TT > & R )
friend

QR分解 補足:実数型のときMATLABとはQとRの符号関係が逆の場合があるが正常なQR分解であることは確認済み 補足:複素数型のときMATLABとは全く違う値が得られるが,正常なQR分解であることは確認済み

引数
[in]A入力行列
[out]Qユニタリ行列 Q行列
[out]R上三角行列 R行列

◆ rank

template<size_t NN, size_t MM, typename TT = double>
friend size_t rank ( const Matrix< NN, MM, TT > & A)
friend

行列のランクを返す関数

引数
[in]U入力行列
戻り値
結果

◆ reale

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< NN, MM, double > reale ( const Matrix< NN, MM, TT > & U)
friend

複素数行列要素の実数部を返す関数

引数
[in]U入力行列
戻り値
結果

◆ reorderrow

template<size_t NN, size_t MM, typename TT = double>
friend Matrix reorderrow ( const Matrix< NN, MM, TT > & U,
const Matrix< 1, MM, int > & v )
friend

並び替え記憶列ベクトルvが昇順になるように,入力行列Uの行を並び替えて元に戻す関数

引数
[in]U入力行列
[in]v並び替え記憶列ベクトル
戻り値
結果

◆ rpinv [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< MM, NN, TT > rpinv ( const Matrix< NN, MM, TT > & A)
friend

右擬似逆行列を返す関数 (Aが横長行列の場合)

引数
[in]A入力行列
戻り値
結果

◆ rpinv [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< MM, NN, TT > rpinv ( const Matrix< NN, MM, TT > & A,
size_t k )
friend

右擬似逆行列を返す関数 (Aが横長行列の場合, 左上小行列のサイズ指定版)

引数
[in]A入力行列 (kより右と下は全部ゼロ埋めを想定)
[in]k左上小行列のサイズ
戻り値
結果

◆ Schur

template<size_t NN, size_t MM, typename TT = double>
friend void Schur ( const Matrix< NN, MM, TT > & A,
Matrix< NN, MM, TT > & Q,
Matrix< NN, MM, TT > & U )
friend

Schur分解

引数
[in]A入力行列
[out]Qユニタリ行列
[out]U上三角行列または疑似上三角行列

◆ setcolumn [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend void setcolumn ( Matrix< NN, MM, TT > & U,
const Matrix< 1, MM, TT > & v,
size_t n )
friend

指定した列を縦ベクトルで上書きする関数

引数
[in,out]U入出力行列
[in]v縦ベクトル
[in]n上書きしたい列

◆ setcolumn [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend void setcolumn ( Matrix< NN, MM, TT > & U,
const std::array< TT, MM > & v,
size_t n )
friend

指定した列を縦ベクトル(std::array)で上書きする関数

引数
[in,out]U入出力行列
[in]v縦ベクトル
[in]n上書きしたい列

◆ setrow [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend void setrow ( Matrix< NN, MM, TT > & U,
const Matrix< NN, 1, TT > & v,
size_t m )
friend

指定した行を横ベクトルで上書きする関数

引数
[in,out]U入出力行列
[in]v横ベクトル
[in]m上書きしたい行

◆ setrow [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend void setrow ( Matrix< NN, MM, TT > & U,
const std::array< TT, NN > & v,
size_t m )
friend

指定した行を横ベクトル(std::array)で上書きする関数

引数
[in,out]U入出力行列
[in]v横ベクトル
[in]m上書きしたい行

◆ setsubmatrix

template<size_t NN, size_t MM, typename TT = double>
template<size_t SN, size_t SM>
friend void setsubmatrix ( Matrix< NN, MM, TT > & U,
size_t n,
size_t m,
const Matrix< SN, SM, TT > & A )
friend

小行列を行列の指定位置に上書きする関数

テンプレート引数
SN小行列の幅
SM小行列の高さ
引数
[in,out]U入出力行列
[in]n上書きしたい横位置(小行列の左)
[in]m上書きしたい縦位置(小行列の上)
[in]A書き込む小行列

◆ setvvector

template<size_t NN, size_t MM, typename TT = double>
template<size_t VM>
friend void setvvector ( Matrix< NN, MM, TT > & U,
const Matrix< 1, VM, TT > & v,
size_t n,
size_t m )
friend

指定した列を縦ベクトルで指定位置に上書きする関数

テンプレート引数
VM縦ベクトルの長さ
引数
[in,out]U入出力行列
[in]v縦ベクトル
[in]n上書きしたい列
[in]m縦方向の書き込む先頭位置

◆ shiftdown [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix shiftdown ( const Matrix< NN, MM, TT > & U)
friend

行列の各要素を下に1行分シフトする関数(最上段の行はゼロになる)

引数
[in]U入力行列
戻り値
結果

◆ shiftdown [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix shiftdown ( const Matrix< NN, MM, TT > & U,
const size_t a )
friend

行列の各要素を下にa行分シフトする関数(最上段の行はゼロになる)

引数
[in]U入力行列
[in]aシフトする行数
戻り値
結果

◆ shiftleft [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix shiftleft ( const Matrix< NN, MM, TT > & U)
friend

行列の各要素を左に1列分シフトする関数(最右段の列はゼロになる)

引数
[in]U入力行列
戻り値
結果

◆ shiftleft [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix shiftleft ( const Matrix< NN, MM, TT > & U,
const size_t a )
friend

行列の各要素を左にa列分シフトする関数(最右段の列はゼロになる)

引数
[in]U入力行列
[in]aシフトする行数
戻り値
結果

◆ shiftright [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix shiftright ( const Matrix< NN, MM, TT > & U)
friend

行列の各要素を右に1列分シフトする関数(最左段の列はゼロになる)

引数
[in]U入力行列
戻り値
結果

◆ shiftright [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix shiftright ( const Matrix< NN, MM, TT > & U,
const size_t a )
friend

行列の各要素を右にa列分シフトする関数(最左段の列はゼロになる)

引数
[in]U入力行列
[in]aシフトする行数
戻り値
結果

◆ shiftup [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix shiftup ( const Matrix< NN, MM, TT > & U)
friend

行列の各要素を上に1行分シフトする関数(最下段の行はゼロになる)

引数
[in]U入力行列
戻り値
結果

◆ shiftup [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix shiftup ( const Matrix< NN, MM, TT > & U,
const size_t a )
friend

行列の各要素を上にa行分シフトする関数(最下段の行はゼロになる)

引数
[in]U入力行列
[in]aシフトする行数
戻り値
結果

◆ solve [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< 1, MM, TT > solve ( const Matrix< NN, MM, TT > & A,
const Matrix< 1, MM, TT > & b )
friend

Ax = bの形の線形連立1次方程式をxについて解く関数(戻り値として返す版)

引数
[in]A係数行列
[in]b係数ベクトル
戻り値
解ベクトル

◆ solve [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend void solve ( const Matrix< NN, MM, TT > & A,
const Matrix< 1, MM, TT > & b,
Matrix< 1, NN, TT > & x )
friend

Ax = bの形の線形連立1次方程式をxについて解く関数(引数で返す版)

引数
[in]A係数行列
[in]b係数ベクトル
[out]x解ベクトル

◆ solve_upper_tri

template<size_t NN, size_t MM, typename TT = double>
friend void solve_upper_tri ( const Matrix< NN, MM, TT > & U,
const Matrix< 1, MM, TT > & b,
Matrix< 1, NN, TT > & x )
friend

Uは上三角行列で,Ux = bの形の線形連立1次方程式をxについて解く関数(引数で返す版)

引数
[in]U係数行列(上三角行列)
[in]b係数ベクトル
[out]x解ベクトル

◆ sqrte [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend Matrix sqrte ( const Matrix< NN, MM, TT > & U)
friend

行列要素の平方根を返す関数

引数
[in]U入力行列
戻り値
結果

◆ sqrte [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend void sqrte ( const Matrix< NN, MM, TT > & U,
Matrix< NN, MM, TT > & Y )
friend

行列要素の平方根を参照で返す関数

引数
[in]U入力行列
[out]Y結果

◆ sumall

template<size_t NN, size_t MM, typename TT = double>
friend double sumall ( const Matrix< NN, MM, TT > & U)
friend

行列の全要素を加算して出力する関数

引数
[in]U入力行列
戻り値
結果

◆ sumcolumn

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< NN, 1, TT > sumcolumn ( const Matrix< NN, MM, TT > & U)
friend

列方向(縦方向)へ加算して横ベクトルを出力する関数

引数
[in]U入力行列
戻り値
結果

◆ sumrow

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< 1, MM, TT > sumrow ( const Matrix< NN, MM, TT > & U)
friend

行方向(横方向)へ加算して縦ベクトルを出力する関数

引数
[in]U入力行列
戻り値
結果

◆ SVD [1/2]

template<size_t NN, size_t MM, typename TT = double>
friend std::tuple< Matrix< MM, MM, TT >, Matrix< NN, MM, TT >, Matrix< NN, NN, TT > > SVD ( const Matrix< NN, MM, TT > & A)
friend

SVD特異値分解(タプルで返す版) 補足:MATLABとはU,S,Vの符号関係が入れ替わっている場合があるが正常なSVDであることは確認済み

引数
[in]A入力行列
戻り値
[U行列, S行列, V行列]のタプル

◆ SVD [2/2]

template<size_t NN, size_t MM, typename TT = double>
friend void SVD ( const Matrix< NN, MM, TT > & A,
Matrix< MM, MM, TT > & U,
Matrix< NN, MM, TT > & S,
Matrix< NN, NN, TT > & V )
friend

SVD特異値分解(引数で返す版) 補足:MATLABとはU,S,Vの符号関係が入れ替わっている場合があるが正常なSVDであることは確認済み

引数
[in]A入力行列
[out]UU行列
[out]SS行列
[out]VV行列

◆ swapcolumn

template<size_t NN, size_t MM, typename TT = double>
friend void swapcolumn ( Matrix< NN, MM, TT > & U,
size_t n1,
size_t n2 )
friend

指定した列と列を入れ替える関数

引数
[in,out]U入出力行列
[in]n1指定列1
[in]n2指定列2

◆ swaprow

template<size_t NN, size_t MM, typename TT = double>
friend void swaprow ( Matrix< NN, MM, TT > & U,
size_t m1,
size_t m2 )
friend

指定した行と行を入れ替える関数

引数
[in,out]U入出力行列
[in]m1指定行1
[in]m2指定行2

◆ tanhe

template<size_t NN, size_t MM, typename TT = double>
friend Matrix tanhe ( const Matrix< NN, MM, TT > & U)
friend

行列要素のtanhを返す関数

引数
[in]U入力行列
戻り値
結果

◆ tp

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< MM, NN, TT > tp ( const Matrix< NN, MM, TT > & U)
friend

転置行列を返す関数

引数
[in]U入力行列
戻り値
結果

◆ tr

template<size_t NN, size_t MM, typename TT = double>
friend TT tr ( const Matrix< NN, MM, TT > & U)
friend

行列のトレースを返す関数

引数
[in]U入力行列
戻り値
結果

◆ vec

template<size_t NN, size_t MM, typename TT = double>
friend Matrix< 1, NN *MM, TT > vec ( const Matrix< NN, MM, TT > & U)
friend

vec作用素(行列→縦ベクトル)

引数
[in]U入力行列
戻り値
結果

このクラス詳解は次のファイルから抽出されました: