ARCS6 AR6-REV.24062600
読み取り中…
検索中…
一致する文字列を見つけられません
ArcsMatrix.hh ファイル

ARCS-Matrix 行列演算クラス [詳解]

#include <string>
#include <tuple>
#include <cmath>
#include <cassert>
#include <array>
#include <complex>
ArcsMatrix.hh の依存先関係図:
被依存関係図:

[ソースコード]

クラス

struct  ARCS::ArcsMatrix::IsIntFloatV< TT >
 
struct  ARCS::ArcsMatrix::IsComplexV< TT >
 
struct  ARCS::ArcsMatrix::IsComplexV< std::complex< double > >
 
struct  ARCS::ArcsMatrix::IsComplexV< std::complex< float > >
 
struct  ARCS::ArcsMatrix::IsComplexV< std::complex< long > >
 
struct  ARCS::ArcsMatrix::IsComplexV< std::complex< int > >
 
class  ARCS::ArcsMat< M, N, T >
 ARCS-Matrix 行列演算クラス [詳解]
 

マクロ定義

#define arcs_assert(a)   (assert(a))
 
#define dispsize(a)   (ArcsMatrix::dispsize_macro((a),#a))
 行列サイズ表示マクロ
 
#define dispf(a, b)   (ArcsMatrix::dispf_macro((a),b,#a))
 行列要素表示マクロ(フォーマット指定あり版)
 
#define disp(a)   (ArcsMatrix::disp_macro((a),#a))
 行列要素表示マクロ(フォーマット指定なし版)
 

列挙型

enum class  ARCS::ArcsMatrix::NormType { AMT_L2 , AMT_L1 , AMT_LINF }
 ノルム計算方法の定義 [詳解]
 
enum class  ARCS::ArcsMatrix::MatStatus { AMT_NA , AMT_LU_ODD , AMT_LU_EVEN }
 行列の状態の定義 [詳解]
 

関数

template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::eye (void)
 M行N列の単位行列を返す関数
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::zeros (void)
 m行n列の零行列を返す関数
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::ones (void)
 m行n列の要素がすべて1の行列を返す関数
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::ramp (void)
 単調増加の縦ベクトルを返す関数
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::getcolumn (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y, const size_t n)
 指定した列から縦ベクトルとして抽出する関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, 1, T > ARCS::ArcsMatrix::getcolumn (const ArcsMat< M, N, T > &U, const size_t n)
 指定した列から縦ベクトルとして抽出する関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::setcolumn (ArcsMat< M, N, T > &UY, const ArcsMat< P, Q, R > &u, const size_t n)
 指定した列を縦ベクトルで上書きする関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::setcolumn (const ArcsMat< P, Q, R > &u, const size_t n, const ArcsMat< M, N, T > &U)
 指定した列を縦ベクトルで上書きする関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr void ARCS::ArcsMatrix::swapcolumn (ArcsMat< M, N, T > &UY, const size_t n1, const size_t n2)
 指定した列と列を入れ替える関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::swapcolumn (const size_t n1, const size_t n2, const ArcsMat< M, N, T > &U)
 指定した列と列を入れ替える関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, typename R = double>
constexpr void ARCS::ArcsMatrix::fillcolumn (ArcsMat< M, N, T > &UY, const R a, const size_t n, const size_t m1, const size_t m2)
 n列目のm1行目からm2行目までを数値aで埋める関数 (m1 <= m2 であること) (引数渡し版)
 
template<size_t M, size_t N, typename T = double, typename R = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::fillcolumn (const R a, const size_t n, const size_t m1, const size_t m2, const ArcsMat< M, N, T > &U)
 n列目のm1行目からm2行目までを数値aで埋める関数 (m1 <= m2 であること) (引数渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = size_t>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::ordercolumn (const ArcsMat< M, N, T > &U, const ArcsMat< P, Q, R > &u)
 並び替え指定横ベクトルuが昇順になるように,行列Uの列を並び替える関数 (戻り値渡し版のみ)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = size_t>
constexpr void ARCS::ArcsMatrix::ordercolumn_and_vec (ArcsMat< M, N, T > &UY, ArcsMat< P, Q, R > &uy)
 並び替え指定横ベクトルuが昇順になるように,行列Uの列と指定横ベクトルの両方を並び替える関数 (引数渡し版のみ)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::sumcolumn (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y)
 各列の総和を計算して横ベクトルを出力する関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< 1, N, T > ARCS::ArcsMatrix::sumcolumn (const ArcsMat< M, N, T > &U)
 各列の総和を計算して横ベクトルを出力する関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::getrow (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y, const size_t m)
 指定した行から横ベクトルとして抽出する関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< 1, N, T > ARCS::ArcsMatrix::getrow (const ArcsMat< M, N, T > &U, const size_t m)
 指定した行から横ベクトルとして抽出する関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::setrow (ArcsMat< M, N, T > &UY, const ArcsMat< P, Q, R > &u, const size_t m)
 指定した行を横ベクトルで上書きする関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::setrow (const ArcsMat< P, Q, R > &u, const size_t m, const ArcsMat< M, N, T > &U)
 指定した行を横ベクトルで上書きする関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr void ARCS::ArcsMatrix::swaprow (ArcsMat< M, N, T > &UY, const size_t m1, const size_t m2)
 指定した行と行を入れ替える関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::swaprow (const size_t m1, const size_t m2, const ArcsMat< M, N, T > &U)
 指定した行と行を入れ替える関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, typename R = double>
constexpr void ARCS::ArcsMatrix::fillrow (ArcsMat< M, N, T > &UY, const R a, const size_t m, const size_t n1, const size_t n2)
 m行目のn1列目からn2列目までを数値aで埋める関数 (n1 <= n2 であること) (引数渡し版)
 
template<size_t M, size_t N, typename T = double, typename R = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::fillrow (const R a, const size_t m, const size_t n1, const size_t n2, const ArcsMat< M, N, T > &U)
 m行目のn1列目からn2列目までを数値aで埋める関数 (n1 <= n2 であること) (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = size_t>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::orderrow (const ArcsMat< M, N, T > &U, const ArcsMat< P, Q, R > &u)
 並び替え指定縦ベクトルuが昇順になるように,行列Uの行を並び替える関数 (戻り値渡し版のみ)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = size_t>
constexpr void ARCS::ArcsMatrix::orderrow_and_vec (ArcsMat< M, N, T > &UY, ArcsMat< P, Q, R > &uy)
 並び替え指定縦ベクトルuが昇順になるように,行列Uの行と指定縦ベクトルの両方を並び替える関数 (引数渡し版のみ)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::sumrow (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y)
 各行の総和を計算して縦ベクトルを出力する関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, 1, T > ARCS::ArcsMatrix::sumrow (const ArcsMat< M, N, T > &U)
 各行の総和を計算して縦ベクトルを出力する関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::getvvector (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y, const size_t m, const size_t n)
 指定位置から縦ベクトルを抽出する関数 (引数渡し版)
 
template<size_t P, size_t M, size_t N, typename T = double>
constexpr ArcsMat< P, 1, T > ARCS::ArcsMatrix::getvvector (const ArcsMat< M, N, T > &U, const size_t m, const size_t n)
 指定位置から縦ベクトルを抽出する関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::setvvector (ArcsMat< M, N, T > &UY, const ArcsMat< P, Q, R > &u, const size_t m, const size_t n)
 指定位置に縦ベクトルで上書きする関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::setvvector (const ArcsMat< P, Q, R > &u, const size_t m, const size_t n, const ArcsMat< M, N, T > &U)
 指定位置に縦ベクトルで上書きする関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::gethvector (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y, const size_t m, const size_t n)
 指定位置から横ベクトルを抽出する関数 (引数渡し版)
 
template<size_t Q, size_t M, size_t N, typename T = double>
constexpr ArcsMat< 1, Q, T > ARCS::ArcsMatrix::gethvector (const ArcsMat< M, N, T > &U, const size_t m, const size_t n)
 指定位置から横ベクトルを抽出する関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::sethvector (ArcsMat< M, N, T > &UY, const ArcsMat< P, Q, R > &u, const size_t m, const size_t n)
 指定位置に横ベクトルで上書きする関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::sethvector (const ArcsMat< P, Q, R > &u, const size_t m, const size_t n, const ArcsMat< M, N, T > &U)
 指定位置に横ベクトルで上書きする関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::getsubmatrix (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t m, const size_t n)
 行列から指定位置の小行列を抽出する関数 (引数渡し版)
 
template<size_t P, size_t Q, size_t M, size_t N, typename T = double>
constexpr ArcsMat< P, Q, T > ARCS::ArcsMatrix::getsubmatrix (const ArcsMat< M, N, T > &U, const size_t m, const size_t n)
 行列から指定位置の小行列を抽出する関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::setsubmatrix (ArcsMat< M, N, T > &UY, const ArcsMat< P, Q, R > &U, const size_t m, const size_t n)
 小行列を行列の指定位置に上書きする関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::setsubmatrix (const ArcsMat< P, Q, R > &Us, const size_t m, const size_t n, const ArcsMat< M, N, T > &U)
 小行列を行列の指定位置に上書きする関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::copymatrix (const ArcsMat< M, N, T > &U, const size_t m1, const size_t m2, const size_t n1, const size_t n2, ArcsMat< P, Q, R > &Y, const size_t my, const size_t ny)
 行列Uから別の行列Yへ位置とサイズを指定してコピーする関数(引数渡し版のみ) 等価なMATLABコード: Y(my:my+(m2-m1), ny:ny+(n2-n1)) = U(m1:m2, n1:n2)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::shiftup (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t m=1)
 行列の各要素を上に1行分シフトする関数(下段の行はゼロになる)(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::shiftup (const ArcsMat< M, N, T > &U, const size_t m=1)
 行列の各要素を上に1行分シフトする関数(下段の行はゼロになる)(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::shiftdown (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t m=1)
 行列の各要素を下にm行分シフトする関数(上段の行はゼロになる)(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::shiftdown (const ArcsMat< M, N, T > &U, const size_t m=1)
 行列の各要素を下にm行分シフトする関数(上段の行はゼロになる)(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::shiftleft (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t n=1)
 行列の各要素を左にn列分シフトする関数(右段の列はゼロになる)(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::shiftleft (const ArcsMat< M, N, T > &U, const size_t n=1)
 行列の各要素を左にn列分シフトする関数(右段の列はゼロになる)(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::shiftright (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t n=1)
 行列の各要素を右にn列分シフトする関数(左段の列はゼロになる)(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::shiftright (const ArcsMat< M, N, T > &U, const size_t n=1)
 行列の各要素を右にn列分シフトする関数(左段の列はゼロになる)(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double>
constexpr void ARCS::ArcsMatrix::concatv (const ArcsMat< M, N, T > &U1, const ArcsMat< P, Q, R > &U2, ArcsMat< D, E, F > &Y)
 行列を縦に連結する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double>
constexpr void ARCS::ArcsMatrix::concath (const ArcsMat< M, N, T > &U1, const ArcsMat< P, Q, R > &U2, ArcsMat< D, E, F > &Y)
 行列を横に連結する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr ArcsMat< M, N+Q, T > ARCS::ArcsMatrix::concath (const ArcsMat< M, N, T > &U1, const ArcsMat< P, Q, R > &U2)
 行列を横に連結する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double, size_t G, size_t H, typename L = double, size_t V, size_t W, typename X = double>
constexpr void ARCS::ArcsMatrix::concat4 (const ArcsMat< M, N, T > &U11, const ArcsMat< P, Q, R > &U12, const ArcsMat< D, E, F > &U21, const ArcsMat< G, H, L > &U22, ArcsMat< V, W, X > &Y)
 4つの行列を1つに連結する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double, size_t G, size_t H, typename L = double>
constexpr ArcsMat< M+D, N+Q, T > ARCS::ArcsMatrix::concat4 (const ArcsMat< M, N, T > &U11, const ArcsMat< P, Q, R > &U12, const ArcsMat< D, E, F > &U21, const ArcsMat< G, H, L > &U22)
 4つの行列を1つに連結する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::diag (const ArcsMat< M, N, T > &u, ArcsMat< P, Q, R > &Y)
 縦ベクトルの各要素を対角要素に持つ正方行列を生成する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, M, T > ARCS::ArcsMatrix::diag (const ArcsMat< M, N, T > &u)
 縦ベクトルの各要素を対角要素に持つ正方行列を生成する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double, size_t L = std::min(M,N)>
constexpr void ARCS::ArcsMatrix::getdiag (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y, const ssize_t k=0)
 行列の対角要素を縦ベクトルとして取得する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double, size_t L = std::min(M,N)>
constexpr ArcsMat< L, 1, T > ARCS::ArcsMatrix::getdiag (const ArcsMat< M, N, T > &U, const ssize_t k=0)
 行列の対角要素を縦ベクトルとして取得する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr T ARCS::ArcsMatrix::trace (const ArcsMat< M, N, T > &U)
 行列のトレースを返す関数(戻り値渡し版のみ)
 
template<size_t M, size_t N, typename T = double>
constexpr T ARCS::ArcsMatrix::multdiag (const ArcsMat< M, N, T > &U)
 行列の対角要素の総積を返す関数(戻り値渡し版のみ)
 
template<size_t M, size_t N, typename T = double>
constexpr std::tuple< size_t, size_t > ARCS::ArcsMatrix::maxidx (const ArcsMat< M, N, T > &U)
 行列要素の最大値の要素番号を返す関数(戻り値渡し版のみ)
 
template<size_t M, size_t N, typename T = double>
constexpr T ARCS::ArcsMatrix::max (const ArcsMat< M, N, T > &U)
 行列要素の最大値を返す関数(戻り値渡し版のみ)
 
template<size_t M, size_t N, typename T = double>
constexpr std::tuple< size_t, size_t > ARCS::ArcsMatrix::minidx (const ArcsMat< M, N, T > &U)
 行列要素の最小値の要素番号を返す関数(戻り値渡し版のみ)
 
template<size_t M, size_t N, typename T = double>
constexpr T ARCS::ArcsMatrix::min (const ArcsMat< M, N, T > &U)
 行列要素の最小値を返す関数(戻り値渡し版のみ)
 
template<size_t M, size_t N, typename T = double>
constexpr T ARCS::ArcsMatrix::sum (const ArcsMat< M, N, T > &U)
 行列要素の総和を返す関数(戻り値渡し版のみ)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::exp (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の指数関数を計算する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::exp (const ArcsMat< M, N, T > &U)
 行列要素の指数関数を計算する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::log (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の対数関数(底e版)を計算する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::log (const ArcsMat< M, N, T > &U)
 行列要素の対数関数(底e版)を計算する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::log10 (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の対数関数(底10版)を計算する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::log10 (const ArcsMat< M, N, T > &U)
 行列要素の対数関数(底10版)を計算する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::sin (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の正弦関数を計算する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::sin (const ArcsMat< M, N, T > &U)
 行列要素の正弦関数を計算する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::cos (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の余弦関数を計算する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::cos (const ArcsMat< M, N, T > &U)
 行列要素の余弦関数を計算する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::tan (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の正接関数を計算する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::tan (const ArcsMat< M, N, T > &U)
 行列要素の正接関数を計算する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::tanh (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の双曲線正接関数を計算する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::tanh (const ArcsMat< M, N, T > &U)
 行列要素の双曲線正接関数を計算する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::sqrt (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の平方根を計算する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::sqrt (const ArcsMat< M, N, T > &U)
 行列要素の平方根を計算する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::sign (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の符号関数を計算する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::sign (const ArcsMat< M, N, T > &U)
 行列要素の符号関数を計算する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::abs (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の絶対値を計算する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::abs (const ArcsMat< M, N, T > &U)
 行列要素の絶対値を計算する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::abs (const ArcsMat< M, N, std::complex< T > > &U)
 行列要素の絶対値を計算する関数(戻り値渡し版, 複素数版特殊化)
 
template<size_t M, size_t N, typename T = std::complex<double>, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::arg (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 複素数行列要素の偏角を計算する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::arg (const ArcsMat< M, N, std::complex< T > > &U)
 複素数行列要素の偏角を計算する関数(戻り値渡し版, 複素数版特殊化)
 
template<size_t M, size_t N, typename T = std::complex<double>, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::real (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 複素数行列要素の実数部を取得する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::real (const ArcsMat< M, N, std::complex< T > > &U)
 複素数行列要素の実数部を計算する関数(戻り値渡し版, 複素数版特殊化)
 
template<size_t M, size_t N, typename T = std::complex<double>, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::imag (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 複素数行列要素の虚数部を取得する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::imag (const ArcsMat< M, N, std::complex< T > > &U)
 複素数行列要素の虚数部を計算する関数(戻り値渡し版, 複素数版特殊化)
 
template<size_t M, size_t N, typename T = std::complex<double>, size_t P, size_t Q, typename R = std::complex<double>>
constexpr void ARCS::ArcsMatrix::conj (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 複素数行列要素の複素共役を取得する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = std::complex<double>>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::conj (const ArcsMat< M, N, T > &U)
 複素数行列要素の複素共役を計算する関数(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::tp (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 転置行列を返す関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< N, M, T > ARCS::ArcsMatrix::tp (const ArcsMat< M, N, T > &U)
 転置行列を返す関数 (戻り値渡し版)
 
template<size_t M, size_t N, typename T = std::complex<double>, size_t P, size_t Q, typename R = std::complex<double>>
constexpr void ARCS::ArcsMatrix::Htp (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 エルミート転置行列を返す関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = std::complex<double>>
constexpr ArcsMat< N, M, T > ARCS::ArcsMatrix::Htp (const ArcsMat< M, N, T > &U)
 エルミート転置行列を返す関数 (戻り値渡し版)
 
template<NormType NRM = ArcsMatrix::NormType::AMT_L2, typename T = double, size_t M, size_t N>
constexpr T ARCS::ArcsMatrix::norm (const ArcsMat< M, N, T > &U)
 行列のノルムを返す関数(戻り値渡し版のみ)
 
template<NormType NRM = ArcsMatrix::NormType::AMT_L2, typename R = double, typename T = double, size_t M, size_t N>
constexpr R ARCS::ArcsMatrix::norm (const ArcsMat< M, N, std::complex< T > > &U)
 行列のノルムを返す関数(戻り値渡し版のみ, 複素数版特殊化)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::gettriup (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t n=1)
 n列目を左端として右上の上三角部分のみを返す関数(下三角部分はゼロ)(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::gettriup (const ArcsMat< M, N, T > &U, const size_t n=1)
 n列目を左端として右上の上三角部分のみを返す関数(下三角部分はゼロ)(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::gettrilo (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t m=1)
 m行目を上端として左下の下三角部分のみを返す関数(上三角部分はゼロ)(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::gettrilo (const ArcsMat< M, N, T > &U, const size_t m=1)
 m行目を上端として左下の下三角部分のみを返す関数(上三角部分はゼロ)(戻り値渡し版)
 
template<size_t M, size_t N, typename T = double, size_t ML, size_t NL, typename TL = double, size_t MU, size_t NU, typename TU = double, size_t MP, size_t NP, typename TP = double>
constexpr void ARCS::ArcsMatrix::LUP (const ArcsMat< M, N, T > &A, ArcsMat< ML, NL, TL > &L, ArcsMat< MU, NU, TU > &U, ArcsMat< MP, NP, TP > &P)
 LU分解の結果と置換行列を返す関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMatrix::LUP (const ArcsMat< M, N, T > &A)
 LU分解の結果と置換行列を返す関数(タプル返し版)
 
template<size_t M, size_t N, typename T = double, size_t ML, size_t NL, typename TL = double, size_t MU, size_t NU, typename TU = double>
constexpr void ARCS::ArcsMatrix::LU (const ArcsMat< M, N, T > &A, ArcsMat< ML, NL, TL > &L, ArcsMat< MU, NU, TU > &U)
 LU分解の結果のみ返す関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMatrix::LU (const ArcsMat< M, N, T > &A)
 LU分解の結果のみ返す関数(タプル返し版)
 
template<size_t M, size_t N, typename T = double>
constexpr T ARCS::ArcsMatrix::det (const ArcsMat< M, N, T > &A)
 行列式の値を返す関数(戻り値返し版のみ)
 
template<size_t M, size_t N, typename T = double, size_t MH, size_t NH, typename TH = double>
constexpr void ARCS::ArcsMatrix::Householder (const ArcsMat< M, N, T > &v, ArcsMat< MH, NH, TH > &H, const size_t k=1)
 Householder行列を生成する関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, M, T > ARCS::ArcsMatrix::Householder (const ArcsMat< M, N, T > &v, const size_t k=1)
 Householder行列を生成する関数(戻り値返し版)
 
template<size_t M, size_t N, typename T = double, size_t MQ, size_t NQ, typename TQ = double, size_t MR, size_t NR, typename TR = double>
constexpr void ARCS::ArcsMatrix::QR (const ArcsMat< M, N, T > &A, ArcsMat< MQ, NQ, TQ > &Q, ArcsMat< MR, NR, TR > &R)
 QR分解(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr std::tuple< ArcsMat< M, M, T >, ArcsMat< M, N, T > > ARCS::ArcsMatrix::QR (const ArcsMat< M, N, T > &A)
 QR分解(タプル返し版)
 
template<size_t M, size_t N, typename T = double, size_t MU, size_t NU, typename TU = double, size_t MS, size_t NS, typename TS = double, size_t MV, size_t NV, typename TV = double>
constexpr void ARCS::ArcsMatrix::SVD (const ArcsMat< M, N, T > &A, ArcsMat< MU, NU, TU > &U, ArcsMat< MS, NS, TS > &S, ArcsMat< MV, NV, TV > &V)
 SVD特異値分解(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr std::tuple< ArcsMat< M, M, T >, ArcsMat< M, N, T >, ArcsMat< N, N, T > > ARCS::ArcsMatrix::SVD (const ArcsMat< M, N, T > &A)
 SVD特異値分解(タプル返し版)
 
template<size_t M, size_t N, typename T = double>
constexpr size_t ARCS::ArcsMatrix::rank (const ArcsMat< M, N, T > &A, const T eps=ArcsMat< M, N, T >::EPSILON)
 行列の階数を返す関数(戻り値返し版のみ)
 
template<size_t M, size_t N, typename T = double, size_t ML, size_t NL, typename TL = double, size_t MD, size_t ND, typename TD = double>
constexpr void ARCS::ArcsMatrix::LDL (const ArcsMat< M, N, T > &A, ArcsMat< ML, NL, TL > &L, ArcsMat< MD, ND, TD > &D)
 修正コレスキー分解(LDL分解) (引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMatrix::LDL (const ArcsMat< M, N, T > &A)
 修正コレスキー分解(LDL分解) (タプル返し版)
 
template<size_t M, size_t N, typename T = double, size_t ML, size_t NL, typename TL = double>
constexpr void ARCS::ArcsMatrix::Cholesky (const ArcsMat< M, N, T > &A, ArcsMat< ML, NL, TL > &R)
 修正コレスキー分解(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::Cholesky (const ArcsMat< M, N, T > &A)
 修正コレスキー分解(戻り値返し版)
 
template<size_t M, size_t N, typename T = double, size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
constexpr void ARCS::ArcsMatrix::linsolve (const ArcsMat< M, N, T > &A, const ArcsMat< MB, NB, TB > &B, ArcsMat< MX, NX, TX > &X)
 AX = Bの形の線形方程式をXについて解く関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double, size_t MB, size_t NB, typename TB = double>
constexpr ArcsMat< N, NB, T > ARCS::ArcsMatrix::linsolve (const ArcsMat< M, N, T > &A, const ArcsMat< MB, NB, TB > &B)
 AX = Bの形の線形方程式をXについて解く関数(戻り値返し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::inv (const ArcsMat< M, N, T > &A, ArcsMat< P, Q, R > &Y)
 逆行列を返す関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::inv (const ArcsMat< M, N, T > &A)
 逆行列を返す関数(戻り値返し版)
 
template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
constexpr void ARCS::ArcsMatrix::pinv (const ArcsMat< M, N, T > &A, ArcsMat< P, Q, R > &Y)
 Moore-Penroseの擬似逆行列を返す関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< N, M, T > ARCS::ArcsMatrix::pinv (const ArcsMat< M, N, T > &A)
 Moore-Penroseの疑似逆行列を返す関数(戻り値返し版)
 
template<size_t M, size_t N, typename T = double, size_t MP, size_t NP, typename TP = double, size_t MH, size_t NH, typename TH = double>
constexpr void ARCS::ArcsMatrix::Hessenberg (const ArcsMat< M, N, T > &A, ArcsMat< MP, NP, TP > &P, ArcsMat< MH, NH, TH > &H)
 Hessenberg分解(引数渡し版) 複素数の場合、この関数はMATLABとは異なる解を出力する。
 
template<size_t M, size_t N, typename T = double>
constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMatrix::Hessenberg (const ArcsMat< M, N, T > &A)
 Hessenberg分解(タプル返し版) 複素数の場合、この関数はMATLABとは異なる解を出力する。
 
template<size_t M, size_t N, typename T = double, size_t MU, size_t NU, typename TU = double, size_t MS, size_t NS, typename TS = double>
constexpr void ARCS::ArcsMatrix::Schur (const ArcsMat< M, N, T > &A, ArcsMat< MU, NU, TU > &U, ArcsMat< MS, NS, TS > &S)
 複素Schur分解(引数渡し版) この関数はMATLABとは異なる解を出力する、ただしもちろん、A = USU' は成立
 
template<size_t M, size_t N, typename T = double>
constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMatrix::Schur (const ArcsMat< M, N, T > &A)
 Schur分解(タプル返し版) この関数はMATLABとは異なる解を出力する、ただしもちろん、A = USU' は成立
 
template<size_t M, size_t N, typename T = double, size_t MV, size_t NV, typename TV = std::complex<double>>
constexpr void ARCS::ArcsMatrix::eig (const ArcsMat< M, N, T > &A, ArcsMat< MV, NV, TV > &v)
 固有値を返す関数
 
template<size_t M, size_t N, typename T = double, typename TV = std::complex<double>>
constexpr ArcsMat< M, 1, TV > ARCS::ArcsMatrix::eig (const ArcsMat< M, N, T > &A)
 固有値を返す関数(戻り値返し版)
 
template<size_t M, size_t N, typename T = double, size_t MV, size_t NV, typename TV = std::complex<double>, size_t MD, size_t ND, typename TD = std::complex<double>>
constexpr void ARCS::ArcsMatrix::eigvec (const ArcsMat< M, N, T > &A, ArcsMat< MV, NV, TV > &V, ArcsMat< MD, ND, TD > &D)
 固有値を持つ対角行列Dと、各々の固有値に対応する固有ベクトルを持つ行列Vを返す関数(引数渡し版)
 
template<size_t M, size_t N, typename T = double, typename TV = std::complex<double>>
constexpr std::tuple< ArcsMat< M, N, TV >, ArcsMat< M, N, TV > > ARCS::ArcsMatrix::eigvec (const ArcsMat< M, N, T > &A)
 固有値を持つ対角行列Dと、各々の固有値に対応する固有ベクトルを持つ行列Vを返す関数(タプル返し版)
 
template<size_t M, size_t N, typename T = double, size_t MR, size_t NR, typename TR = double, size_t MY, size_t NY, typename TY = double>
constexpr void ARCS::ArcsMatrix::Kron (const ArcsMat< M, N, T > &L, const ArcsMat< MR, NR, TR > &R, ArcsMat< MY, NY, TY > &Y)
 クロネッカー積(引数渡し版)
 
template<size_t M, size_t N, typename T = double, size_t MR, size_t NR, typename TR = double>
constexpr ArcsMat< M *MR, N *NR, T > ARCS::ArcsMatrix::Kron (const ArcsMat< M, N, T > &L, const ArcsMat< MR, NR, TR > &R)
 クロネッカー積(戻り値返し版)
 
template<size_t M, size_t N, typename T = double, size_t MR, size_t NR, typename TR = double, size_t MY, size_t NY, typename TY = double>
constexpr void ARCS::ArcsMatrix::cross (const ArcsMat< M, N, T > &L, const ArcsMat< MR, NR, TR > &R, ArcsMat< MY, NY, TY > &Y)
 クロス積 (引数渡し版)
 
template<size_t M, size_t N, typename T = double, size_t MR, size_t NR, typename TR = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::cross (const ArcsMat< M, N, T > &L, const ArcsMat< MR, NR, TR > &R)
 クロス積 (戻り値返し版)
 
template<size_t M, size_t N, typename T = double, size_t MY, size_t NY, typename TY = double>
constexpr void ARCS::ArcsMatrix::vec (const ArcsMat< M, N, T > &U, ArcsMat< MY, NY, TY > &y)
 vec作用素(行列→縦ベクトル) (引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M *N, 1, T > ARCS::ArcsMatrix::vec (const ArcsMat< M, N, T > &U)
 vec作用素(行列→縦ベクトル) (戻り値返し版)
 
template<size_t M, size_t N, typename T = double, size_t MY, size_t NY, typename TY = double>
constexpr void ARCS::ArcsMatrix::vecinv (const ArcsMat< M, N, T > &u, ArcsMat< MY, NY, TY > &Y)
 vec作用素の逆(縦ベクトル→行列) (引数渡し版)
 
template<size_t MY, size_t NY, size_t M, size_t N, typename T = double>
constexpr ArcsMat< MY, NY, T > ARCS::ArcsMatrix::vecinv (const ArcsMat< M, N, T > &u)
 vec作用素の逆(縦ベクトル→行列) (戻り値返し版)
 
template<size_t M, size_t N, typename T = double, size_t MY, size_t NY, typename TY = double>
constexpr void ARCS::ArcsMatrix::expm (const ArcsMat< M, N, T > &U, ArcsMat< MY, NY, TY > &Y, const size_t k=13)
 行列指数関数 (引数渡し版)
 
template<size_t M, size_t N, typename T = double>
constexpr ArcsMat< M, N, T > ARCS::ArcsMatrix::expm (const ArcsMat< M, N, T > &U, const size_t k=13)
 行列指数関数 (戻り値返し版)
 

変数

template<typename TT >
constexpr bool ARCS::ArcsMatrix::IsIntFloat = IsIntFloatV<TT>::value
 
template<typename TT >
constexpr bool ARCS::ArcsMatrix::IsComplex = IsComplexV<TT>::value
 
template<typename TT >
constexpr bool ARCS::ArcsMatrix::IsApplicable = IsIntFloatV<TT>::value | IsComplexV<TT>::value
 

詳解

ARCS-Matrix 行列演算クラス

行列に関係する様々な演算を実行するクラス

日付
2022/07/27
著者
Yokokura, Yuki

行列に関係する様々な演算を実行するクラス

日付
2024/07/19
著者
Yokokura, Yuki

列挙型詳解

◆ MatStatus

enum class ARCS::ArcsMatrix::MatStatus
strong

行列の状態の定義

列挙値
AMT_NA 

状態定義該当なし

AMT_LU_ODD 

LU分解したときに並べ替えが奇数回発生

AMT_LU_EVEN 

LU分解したときに並べ替えが偶数回発生

◆ NormType

enum class ARCS::ArcsMatrix::NormType
strong

ノルム計算方法の定義

列挙値
AMT_L2 

ユークリッドノルム(2-ノルム)

AMT_L1 

絶対値ノルム(1-ノルム)

AMT_LINF 

無限大ノルム(最大値ノルム)

関数詳解

◆ abs() [1/3]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::abs ( const ArcsMat< M, N, std::complex< T > > & U)
constexpr

行列要素の絶対値を計算する関数(戻り値渡し版, 複素数版特殊化)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ abs() [2/3]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::abs ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の絶対値を計算する関数(戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ abs() [3/3]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::abs ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

行列要素の絶対値を計算する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列と出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ arg() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::arg ( const ArcsMat< M, N, std::complex< T > > & U)
constexpr

複素数行列要素の偏角を計算する関数(戻り値渡し版, 複素数版特殊化)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ arg() [2/2]

template<size_t M, size_t N, typename T = std::complex<double>, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::arg ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

複素数行列要素の偏角を計算する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列と出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ Cholesky() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::Cholesky ( const ArcsMat< M, N, T > & A)
constexpr

修正コレスキー分解(戻り値返し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
戻り値
上三角行列

◆ Cholesky() [2/2]

template<size_t M, size_t N, typename T = double, size_t ML, size_t NL, typename TL = double>
void ARCS::ArcsMatrix::Cholesky ( const ArcsMat< M, N, T > & A,
ArcsMat< ML, NL, TL > & R )
constexpr

修正コレスキー分解(引数渡し版)

テンプレート引数
M,N,T,ML,NL,TL入力出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]R上三角行列

◆ concat4() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double, size_t G, size_t H, typename L = double>
ArcsMat< M+D, N+Q, T > ARCS::ArcsMatrix::concat4 ( const ArcsMat< M, N, T > & U11,
const ArcsMat< P, Q, R > & U12,
const ArcsMat< D, E, F > & U21,
const ArcsMat< G, H, L > & U22 )
constexpr

4つの行列を1つに連結する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R,D,E,F,G,H,L入力行列11-22と出力行列の高さ, 幅, 要素の型
引数
[in]U11入力行列11(左上)
[in]U12入力行列12(右上)
[in]U21入力行列11(左下)
[in]U22入力行列12(右下)
戻り値
出力行列

◆ concat4() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double, size_t G, size_t H, typename L = double, size_t V, size_t W, typename X = double>
void ARCS::ArcsMatrix::concat4 ( const ArcsMat< M, N, T > & U11,
const ArcsMat< P, Q, R > & U12,
const ArcsMat< D, E, F > & U21,
const ArcsMat< G, H, L > & U22,
ArcsMat< V, W, X > & Y )
constexpr

4つの行列を1つに連結する関数(戻り値渡し版)

テンプレート引数
M,N,T,P,Q,R,D,E,F,G,H,L,V,W,X入力行列11-22と出力行列の高さ, 幅, 要素の型
引数
[in]U11入力行列11(左上)
[in]U12入力行列12(右上)
[in]U21入力行列11(左下)
[in]U22入力行列12(右下)
[out]Y出力行列

◆ concath() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
ArcsMat< M, N+Q, T > ARCS::ArcsMatrix::concath ( const ArcsMat< M, N, T > & U1,
const ArcsMat< P, Q, R > & U2 )
constexpr

行列を横に連結する関数(戻り値渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列1と2の高さ, 幅, 要素の型
引数
[in]U1入力行列1
[in]U2入力行列2
[out]Y出力行列

◆ concath() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double>
void ARCS::ArcsMatrix::concath ( const ArcsMat< M, N, T > & U1,
const ArcsMat< P, Q, R > & U2,
ArcsMat< D, E, F > & Y )
constexpr

行列を横に連結する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R,D,E,F入力行列1と2と出力行列の高さ, 幅, 要素の型
引数
[in]U1入力行列1
[in]U2入力行列2
[out]Y出力行列

◆ concatv()

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double>
void ARCS::ArcsMatrix::concatv ( const ArcsMat< M, N, T > & U1,
const ArcsMat< P, Q, R > & U2,
ArcsMat< D, E, F > & Y )
constexpr

行列を縦に連結する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R,D,E,F入力行列1と2と出力行列の高さ, 幅, 要素の型
引数
[in]U1入力行列1
[in]U2入力行列2
[out]Y出力行列

◆ conj() [1/2]

template<size_t M, size_t N, typename T = std::complex<double>>
ArcsMat< M, N, T > ARCS::ArcsMatrix::conj ( const ArcsMat< M, N, T > & U)
constexpr

複素数行列要素の複素共役を計算する関数(戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ conj() [2/2]

template<size_t M, size_t N, typename T = std::complex<double>, size_t P, size_t Q, typename R = std::complex<double>>
void ARCS::ArcsMatrix::conj ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

複素数行列要素の複素共役を取得する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列と出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ copymatrix()

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::copymatrix ( const ArcsMat< M, N, T > & U,
const size_t m1,
const size_t m2,
const size_t n1,
const size_t n2,
ArcsMat< P, Q, R > & Y,
const size_t my,
const size_t ny )
constexpr

行列Uから別の行列Yへ位置とサイズを指定してコピーする関数(引数渡し版のみ) 等価なMATLABコード: Y(my:my+(m2-m1), ny:ny+(n2-n1)) = U(m1:m2, n1:n2)

テンプレート引数
M,N,T,P,Q,R入出力行列の高さ, 幅, 要素の型, 入力行列の高さ, 幅, 要素の型
引数
[in]Uコピー元の行列
[in]m1コピー元の縦方向の抽出開始位置
[in]m2コピー元の縦方向の抽出終了位置
[in]n1コピー元の横方向の抽出開始位置
[in]n2コピー元の横方向の抽出終了位置
[in,out]Yコピー先の行列
[in]myコピー先の縦方向の書き込み開始位置
[in]nyコピー先の横方向の書き込み開始位置

◆ cos() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::cos ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の余弦関数を計算する関数(戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ cos() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::cos ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

行列要素の余弦関数を計算する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力ベクトルと出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ cross() [1/2]

template<size_t M, size_t N, typename T = double, size_t MR, size_t NR, typename TR = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::cross ( const ArcsMat< M, N, T > & L,
const ArcsMat< MR, NR, TR > & R )
constexpr

クロス積 (戻り値返し版)

テンプレート引数
M,N,T,MR,NR,TR入力行列の高さ, 幅, 要素の型
引数
[in]L演算子の左側
[in]R演算子の右側
戻り値
結果

◆ cross() [2/2]

template<size_t M, size_t N, typename T = double, size_t MR, size_t NR, typename TR = double, size_t MY, size_t NY, typename TY = double>
void ARCS::ArcsMatrix::cross ( const ArcsMat< M, N, T > & L,
const ArcsMat< MR, NR, TR > & R,
ArcsMat< MY, NY, TY > & Y )
constexpr

クロス積 (引数渡し版)

テンプレート引数
M,N,T,MR,NR,TR,MY,NY,TY入出力行列の高さ, 幅, 要素の型
引数
[in]L演算子の左側
[in]R演算子の右側
[out]Y結果

◆ det()

template<size_t M, size_t N, typename T = double>
T ARCS::ArcsMatrix::det ( const ArcsMat< M, N, T > & A)
constexpr

行列式の値を返す関数(戻り値返し版のみ)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
戻り値
結果

◆ diag() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, M, T > ARCS::ArcsMatrix::diag ( const ArcsMat< M, N, T > & u)
constexpr

縦ベクトルの各要素を対角要素に持つ正方行列を生成する関数(戻り値渡し版)

テンプレート引数
M,N,T正方行列のサイズ, 要素の型
引数
[in]u入力ベクトル
戻り値
出力行列

◆ diag() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::diag ( const ArcsMat< M, N, T > & u,
ArcsMat< P, Q, R > & Y )
constexpr

縦ベクトルの各要素を対角要素に持つ正方行列を生成する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力ベクトルと出力行列の高さ, 幅, 要素の型
引数
[in]u入力ベクトル
[in]Y出力行列
戻り値
出力行列

◆ eig() [1/2]

template<size_t M, size_t N, typename T = double, typename TV = std::complex<double>>
ArcsMat< M, 1, TV > ARCS::ArcsMatrix::eig ( const ArcsMat< M, N, T > & A)
constexpr

固有値を返す関数(戻り値返し版)

テンプレート引数
M,N,T,TV入力行列の高さ, 幅, 要素の型, 出力行列の要素の型
引数
[in]A入力行列
戻り値
固有値の縦ベクトル

◆ eig() [2/2]

template<size_t M, size_t N, typename T = double, size_t MV, size_t NV, typename TV = std::complex<double>>
void ARCS::ArcsMatrix::eig ( const ArcsMat< M, N, T > & A,
ArcsMat< MV, NV, TV > & v )
constexpr

固有値を返す関数

テンプレート引数
M,N,T,MV,NV,TV入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]v固有値の縦ベクトル

◆ eigvec() [1/2]

template<size_t M, size_t N, typename T = double, typename TV = std::complex<double>>
std::tuple< ArcsMat< M, N, TV >, ArcsMat< M, N, TV > > ARCS::ArcsMatrix::eigvec ( const ArcsMat< M, N, T > & A)
constexpr

固有値を持つ対角行列Dと、各々の固有値に対応する固有ベクトルを持つ行列Vを返す関数(タプル返し版)

テンプレート引数
M,N,T,TV入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
戻り値
(V, D) (各々の固有ベクトルを縦ベクトルとして持つ行列V, 固有値を対角に持つ対角行列D) のタプル

◆ eigvec() [2/2]

template<size_t M, size_t N, typename T = double, size_t MV, size_t NV, typename TV = std::complex<double>, size_t MD, size_t ND, typename TD = std::complex<double>>
void ARCS::ArcsMatrix::eigvec ( const ArcsMat< M, N, T > & A,
ArcsMat< MV, NV, TV > & V,
ArcsMat< MD, ND, TD > & D )
constexpr

固有値を持つ対角行列Dと、各々の固有値に対応する固有ベクトルを持つ行列Vを返す関数(引数渡し版)

テンプレート引数
M,N,T,MV,NV,TV,MD,ND,TD入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]V各々の固有ベクトルを縦ベクトルとして持つ行列V
[out]D固有値を対角に持つ対角行列D

◆ exp() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::exp ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の指数関数を計算する関数(戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ exp() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::exp ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

行列要素の指数関数を計算する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力ベクトルと出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ expm() [1/2]

template<size_t M, size_t N, typename T = double, size_t MY, size_t NY, typename TY = double>
void ARCS::ArcsMatrix::expm ( const ArcsMat< M, N, T > & U,
ArcsMat< MY, NY, TY > & Y,
const size_t k = 13 )
constexpr

行列指数関数 (引数渡し版)

テンプレート引数
M,N,T,MY,NY,TY入出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]kパデ近似の次数 (デフォルト値 = 13)

◆ expm() [2/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::expm ( const ArcsMat< M, N, T > & U,
const size_t k = 13 )
constexpr

行列指数関数 (戻り値返し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[in]kパデ近似の次数 (デフォルト値 = 13)
戻り値
出力行列

◆ eye()

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::eye ( void )
constexpr

M行N列の単位行列を返す関数

テンプレート引数
M,N,T行列の高さ, 幅, 要素の型
戻り値
単位行列

◆ fillcolumn() [1/2]

template<size_t M, size_t N, typename T = double, typename R = double>
void ARCS::ArcsMatrix::fillcolumn ( ArcsMat< M, N, T > & UY,
const R a,
const size_t n,
const size_t m1,
const size_t m2 )
constexpr

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

テンプレート引数
M,N,T,R入出力行列の高さ, 幅, 要素の型, 埋める値の型
引数
[in,out]UY入出力行列
[in]a埋める値
[in]n指定列
[in]m1開始行
[in]m2終了行

◆ fillcolumn() [2/2]

template<size_t M, size_t N, typename T = double, typename R = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::fillcolumn ( const R a,
const size_t n,
const size_t m1,
const size_t m2,
const ArcsMat< M, N, T > & U )
constexpr

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

テンプレート引数
M,N,T,R入出力行列の高さ, 幅, 要素の型, 埋める値の型
引数
[in]a埋める値
[in]n指定列
[in]m1開始行
[in]m2終了行
[in]U入力行列
戻り値
出力行列

◆ fillrow() [1/2]

template<size_t M, size_t N, typename T = double, typename R = double>
void ARCS::ArcsMatrix::fillrow ( ArcsMat< M, N, T > & UY,
const R a,
const size_t m,
const size_t n1,
const size_t n2 )
constexpr

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

テンプレート引数
M,N,T,R入出力行列の高さ, 幅, 要素の型, 埋める値の型
引数
[in,out]UY入出力行列
[in]a埋める値
[in]m指定行
[in]n1開始列
[in]n2終了列

◆ fillrow() [2/2]

template<size_t M, size_t N, typename T = double, typename R = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::fillrow ( const R a,
const size_t m,
const size_t n1,
const size_t n2,
const ArcsMat< M, N, T > & U )
constexpr

m行目のn1列目からn2列目までを数値aで埋める関数 (n1 <= n2 であること) (戻り値渡し版)

テンプレート引数
M,N,T,R入出力行列の高さ, 幅, 要素の型, 埋める値の型
引数
[in]a埋める値
[in]m指定行
[in]n1開始列
[in]n2終了列
[in]U入力行列
戻り値
出力行列

◆ getcolumn() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::getcolumn ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y,
const size_t n )
constexpr

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

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[out]y出力ベクトル
[in]n抽出したい列

◆ getcolumn() [2/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, 1, T > ARCS::ArcsMatrix::getcolumn ( const ArcsMat< M, N, T > & U,
const size_t n )
constexpr

指定した列から縦ベクトルとして抽出する関数 (戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[in]n抽出したい列
戻り値
出力ベクトル

◆ getdiag() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double, size_t L = std::min(M,N)>
void ARCS::ArcsMatrix::getdiag ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y,
const ssize_t k = 0 )
constexpr

行列の対角要素を縦ベクトルとして取得する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R,L入力行列と出力ベクトルの高さ, 幅, 要素の型, 対角要素の数
引数
[in]U入力行列
[in]kk番目の対角, k=0で主対角、K<0で主対角より下、0<kで主対角より上 (デフォルト値 = 0)
[out]y出力ベクトル

◆ getdiag() [2/2]

template<size_t M, size_t N, typename T = double, size_t L = std::min(M,N)>
ArcsMat< L, 1, T > ARCS::ArcsMatrix::getdiag ( const ArcsMat< M, N, T > & U,
const ssize_t k = 0 )
constexpr

行列の対角要素を縦ベクトルとして取得する関数(戻り値渡し版)

テンプレート引数
M,N,T,L入力行列の高さ, 幅, 要素の型, 対角要素の数
引数
[in]U入力行列
[in]kk番目の対角, k=0で主対角、K<0で主対角より下、0<kで主対角より上 (デフォルト値 = 0)
戻り値
出力ベクトル

◆ gethvector() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::gethvector ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y,
const size_t m,
const size_t n )
constexpr

指定位置から横ベクトルを抽出する関数 (引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[in]y出力ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目

◆ gethvector() [2/2]

template<size_t Q, size_t M, size_t N, typename T = double>
ArcsMat< 1, Q, T > ARCS::ArcsMatrix::gethvector ( const ArcsMat< M, N, T > & U,
const size_t m,
const size_t n )
constexpr

指定位置から横ベクトルを抽出する関数 (戻り値渡し版)

テンプレート引数
Q,M,N,T出力ベクトルの幅, 入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[in]m先頭位置 m行目
[in]n先頭位置 n列目
戻り値
横ベクトル

◆ getrow() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::getrow ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y,
const size_t m )
constexpr

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

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[out]y出力ベクトル
[in]m抽出したい行

◆ getrow() [2/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< 1, N, T > ARCS::ArcsMatrix::getrow ( const ArcsMat< M, N, T > & U,
const size_t m )
constexpr

指定した行から横ベクトルとして抽出する関数 (戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[in]m抽出したい行
戻り値
出力ベクトル

◆ getsubmatrix() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::getsubmatrix ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t m,
const size_t n )
constexpr

行列から指定位置の小行列を抽出する関数 (引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 小行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y抽出した小行列
[in]m抽出する縦位置(小行列の上)
[in]n抽出する横位置(小行列の左)

◆ getsubmatrix() [2/2]

template<size_t P, size_t Q, size_t M, size_t N, typename T = double>
ArcsMat< P, Q, T > ARCS::ArcsMatrix::getsubmatrix ( const ArcsMat< M, N, T > & U,
const size_t m,
const size_t n )
constexpr

行列から指定位置の小行列を抽出する関数 (戻り値渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 小行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[in]m抽出する縦位置(小行列の上)
[in]n抽出する横位置(小行列の左)
戻り値
抽出した小行列

◆ gettrilo() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::gettrilo ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t m = 1 )
constexpr

m行目を上端として左下の下三角部分のみを返す関数(上三角部分はゼロ)(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]m切り出す上端位置 m行目(デフォルト値 = 1)

◆ gettrilo() [2/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::gettrilo ( const ArcsMat< M, N, T > & U,
const size_t m = 1 )
constexpr

m行目を上端として左下の下三角部分のみを返す関数(上三角部分はゼロ)(戻り値渡し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[in]m切り出す上端位置 m行目(デフォルト値 = 1)
戻り値
出力行列

◆ gettriup() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::gettriup ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t n = 1 )
constexpr

n列目を左端として右上の上三角部分のみを返す関数(下三角部分はゼロ)(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]n切り出す左端位置 n列目(デフォルト値 = 1)

◆ gettriup() [2/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::gettriup ( const ArcsMat< M, N, T > & U,
const size_t n = 1 )
constexpr

n列目を左端として右上の上三角部分のみを返す関数(下三角部分はゼロ)(戻り値渡し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[in]n切り出す左端位置 n列目(デフォルト値 = 1)
戻り値
出力行列

◆ getvvector() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::getvvector ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y,
const size_t m,
const size_t n )
constexpr

指定位置から縦ベクトルを抽出する関数 (引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[in]y出力ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目

◆ getvvector() [2/2]

template<size_t P, size_t M, size_t N, typename T = double>
ArcsMat< P, 1, T > ARCS::ArcsMatrix::getvvector ( const ArcsMat< M, N, T > & U,
const size_t m,
const size_t n )
constexpr

指定位置から縦ベクトルを抽出する関数 (戻り値渡し版)

テンプレート引数
P,M,N,T出力ベクトルの幅, 入力行列の高さ, 幅, 要素の型, 出力ベクトルの幅
引数
[in]U入力行列
[in]m先頭位置 m行目
[in]n先頭位置 n列目
戻り値
縦ベクトル

◆ Hessenberg() [1/2]

template<size_t M, size_t N, typename T = double>
std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMatrix::Hessenberg ( const ArcsMat< M, N, T > & A)
constexpr

Hessenberg分解(タプル返し版) 複素数の場合、この関数はMATLABとは異なる解を出力する。

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
戻り値
(ユニタリ行列P, ヘッセンベルグ行列H) のタプル

◆ Hessenberg() [2/2]

template<size_t M, size_t N, typename T = double, size_t MP, size_t NP, typename TP = double, size_t MH, size_t NH, typename TH = double>
void ARCS::ArcsMatrix::Hessenberg ( const ArcsMat< M, N, T > & A,
ArcsMat< MP, NP, TP > & P,
ArcsMat< MH, NH, TH > & H )
constexpr

Hessenberg分解(引数渡し版) 複素数の場合、この関数はMATLABとは異なる解を出力する。

テンプレート引数
M,N,T,MP,NP,TP,MH,NH,TH出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]Pユニタリ行列
[out]Hヘッセンベルグ行列

◆ Householder() [1/2]

template<size_t M, size_t N, typename T = double, size_t MH, size_t NH, typename TH = double>
void ARCS::ArcsMatrix::Householder ( const ArcsMat< M, N, T > & v,
ArcsMat< MH, NH, TH > & H,
const size_t k = 1 )
constexpr

Householder行列を生成する関数(引数渡し版)

テンプレート引数
M,N,T,MH,NH,TH入力ベクトルとH行列の高さ, 幅, 要素の型
引数
[in]v入力縦ベクトル
[out]Hハウスホルダー行列
[in]k次元 (デフォルト値 = 1)

◆ Householder() [2/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, M, T > ARCS::ArcsMatrix::Householder ( const ArcsMat< M, N, T > & v,
const size_t k = 1 )
constexpr

Householder行列を生成する関数(戻り値返し版)

テンプレート引数
M,N,T入力ベクトルの高さ, 幅, 要素の型
引数
[in]v入力縦ベクトル
[in]k次元 (デフォルト値 = 1)
戻り値
ハウスホルダー行列

◆ Htp() [1/2]

template<size_t M, size_t N, typename T = std::complex<double>>
ArcsMat< N, M, T > ARCS::ArcsMatrix::Htp ( const ArcsMat< M, N, T > & U)
constexpr

エルミート転置行列を返す関数 (戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
出力行列

◆ Htp() [2/2]

template<size_t M, size_t N, typename T = std::complex<double>, size_t P, size_t Q, typename R = std::complex<double>>
void ARCS::ArcsMatrix::Htp ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

エルミート転置行列を返す関数 (引数渡し版)

テンプレート引数
M,N,T,P,Q,R入出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ imag() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::imag ( const ArcsMat< M, N, std::complex< T > > & U)
constexpr

複素数行列要素の虚数部を計算する関数(戻り値渡し版, 複素数版特殊化)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ imag() [2/2]

template<size_t M, size_t N, typename T = std::complex<double>, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::imag ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

複素数行列要素の虚数部を取得する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列と出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ inv() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::inv ( const ArcsMat< M, N, T > & A)
constexpr

逆行列を返す関数(戻り値返し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
戻り値
出力行列

◆ inv() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::inv ( const ArcsMat< M, N, T > & A,
ArcsMat< P, Q, R > & Y )
constexpr

逆行列を返す関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]Y出力行列

◆ Kron() [1/2]

template<size_t M, size_t N, typename T = double, size_t MR, size_t NR, typename TR = double>
ArcsMat< M *MR, N *NR, T > ARCS::ArcsMatrix::Kron ( const ArcsMat< M, N, T > & L,
const ArcsMat< MR, NR, TR > & R )
constexpr

クロネッカー積(戻り値返し版)

テンプレート引数
M,N,T,MR,NR,TR入力行列の高さ, 幅, 要素の型
引数
[in]L演算子の左側
[in]R演算子の右側
戻り値
結果

◆ Kron() [2/2]

template<size_t M, size_t N, typename T = double, size_t MR, size_t NR, typename TR = double, size_t MY, size_t NY, typename TY = double>
void ARCS::ArcsMatrix::Kron ( const ArcsMat< M, N, T > & L,
const ArcsMat< MR, NR, TR > & R,
ArcsMat< MY, NY, TY > & Y )
constexpr

クロネッカー積(引数渡し版)

テンプレート引数
M,N,T,MR,NR,TR,MY,NY,TY入出力行列の高さ, 幅, 要素の型
引数
[in]L演算子の左側
[in]R演算子の右側
[out]Y結果

◆ LDL() [1/2]

template<size_t M, size_t N, typename T = double>
std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMatrix::LDL ( const ArcsMat< M, N, T > & A)
constexpr

修正コレスキー分解(LDL分解) (タプル返し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
戻り値
(L, D) (L行列, D行列)のタプル

◆ LDL() [2/2]

template<size_t M, size_t N, typename T = double, size_t ML, size_t NL, typename TL = double, size_t MD, size_t ND, typename TD = double>
void ARCS::ArcsMatrix::LDL ( const ArcsMat< M, N, T > & A,
ArcsMat< ML, NL, TL > & L,
ArcsMat< MD, ND, TD > & D )
constexpr

修正コレスキー分解(LDL分解) (引数渡し版)

テンプレート引数
M,N,T,ML,NL,TL,MD,ND,TDA, L, D行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]L下三角行列
[out]D対角行列

◆ linsolve() [1/2]

template<size_t M, size_t N, typename T = double, size_t MB, size_t NB, typename TB = double>
ArcsMat< N, NB, T > ARCS::ArcsMatrix::linsolve ( const ArcsMat< M, N, T > & A,
const ArcsMat< MB, NB, TB > & B )
constexpr

AX = Bの形の線形方程式をXについて解く関数(戻り値返し版)

テンプレート引数
M,N,T,MB,NB,TBA、Bの高さ, 幅, 要素の型
引数
[in]A係数行列(正方行列・非正方行列)
[in]B係数ベクトル・行列
戻り値
X 解ベクトル・行列

◆ linsolve() [2/2]

template<size_t M, size_t N, typename T = double, size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
void ARCS::ArcsMatrix::linsolve ( const ArcsMat< M, N, T > & A,
const ArcsMat< MB, NB, TB > & B,
ArcsMat< MX, NX, TX > & X )
constexpr

AX = Bの形の線形方程式をXについて解く関数(引数渡し版)

テンプレート引数
M,N,T,MB,NB,TB,MX,NX,TXA、BとXの高さ, 幅, 要素の型
引数
[in]A係数行列(正方行列・非正方行列)
[in]B係数ベクトル・行列
[out]X解ベクトル・行列

◆ log() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::log ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の対数関数(底e版)を計算する関数(戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ log() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::log ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

行列要素の対数関数(底e版)を計算する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力ベクトルと出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ log10() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::log10 ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の対数関数(底10版)を計算する関数(戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ log10() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::log10 ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

行列要素の対数関数(底10版)を計算する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力ベクトルと出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ LU() [1/2]

template<size_t M, size_t N, typename T = double>
std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMatrix::LU ( const ArcsMat< M, N, T > & A)
constexpr

LU分解の結果のみ返す関数(タプル返し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
戻り値
(L, U) (下三角行列, 上三角行列)のタプル

◆ LU() [2/2]

template<size_t M, size_t N, typename T = double, size_t ML, size_t NL, typename TL = double, size_t MU, size_t NU, typename TU = double>
void ARCS::ArcsMatrix::LU ( const ArcsMat< M, N, T > & A,
ArcsMat< ML, NL, TL > & L,
ArcsMat< MU, NU, TU > & U )
constexpr

LU分解の結果のみ返す関数(引数渡し版)

テンプレート引数
M,N,T,ML,NL,TL,MU,NU,TU入出力行列,L,U行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]L下三角行列
[out]U上三角行列

◆ LUP() [1/2]

template<size_t M, size_t N, typename T = double>
std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMatrix::LUP ( const ArcsMat< M, N, T > & A)
constexpr

LU分解の結果と置換行列を返す関数(タプル返し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
戻り値
(L, U, P) (下三角行列, 上三角行列, 置換行列)のタプル

◆ LUP() [2/2]

template<size_t M, size_t N, typename T = double, size_t ML, size_t NL, typename TL = double, size_t MU, size_t NU, typename TU = double, size_t MP, size_t NP, typename TP = double>
void ARCS::ArcsMatrix::LUP ( const ArcsMat< M, N, T > & A,
ArcsMat< ML, NL, TL > & L,
ArcsMat< MU, NU, TU > & U,
ArcsMat< MP, NP, TP > & P )
constexpr

LU分解の結果と置換行列を返す関数(引数渡し版)

テンプレート引数
M,N,T,ML,NL,TL,MU,NU,TU,MP,NP,TP入出力行列,L,U,P行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]L下三角行列
[out]U上三角行列
[out]P置換行列

◆ max()

template<size_t M, size_t N, typename T = double>
T ARCS::ArcsMatrix::max ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の最大値を返す関数(戻り値渡し版のみ)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
結果

◆ maxidx()

template<size_t M, size_t N, typename T = double>
std::tuple< size_t, size_t > ARCS::ArcsMatrix::maxidx ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の最大値の要素番号を返す関数(戻り値渡し版のみ)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
結果

◆ min()

template<size_t M, size_t N, typename T = double>
T ARCS::ArcsMatrix::min ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の最小値を返す関数(戻り値渡し版のみ)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
結果

◆ minidx()

template<size_t M, size_t N, typename T = double>
std::tuple< size_t, size_t > ARCS::ArcsMatrix::minidx ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の最小値の要素番号を返す関数(戻り値渡し版のみ)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
結果

◆ multdiag()

template<size_t M, size_t N, typename T = double>
T ARCS::ArcsMatrix::multdiag ( const ArcsMat< M, N, T > & U)
constexpr

行列の対角要素の総積を返す関数(戻り値渡し版のみ)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
結果

◆ norm() [1/2]

template<NormType NRM = ArcsMatrix::NormType::AMT_L2, typename R = double, typename T = double, size_t M, size_t N>
R ARCS::ArcsMatrix::norm ( const ArcsMat< M, N, std::complex< T > > & U)
constexpr

行列のノルムを返す関数(戻り値渡し版のみ, 複素数版特殊化)

テンプレート引数
NRM,M,N,Tノルムのタイプ, 入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
結果

◆ norm() [2/2]

template<NormType NRM = ArcsMatrix::NormType::AMT_L2, typename T = double, size_t M, size_t N>
T ARCS::ArcsMatrix::norm ( const ArcsMat< M, N, T > & U)
constexpr

行列のノルムを返す関数(戻り値渡し版のみ)

テンプレート引数
NRM,M,N,Tノルムのタイプ, 入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
結果

◆ ones()

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::ones ( void )
constexpr

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

テンプレート引数
M,N,T行列の高さ, 幅, 要素の型
戻り値
1行列

◆ ordercolumn()

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = size_t>
ArcsMat< M, N, T > ARCS::ArcsMatrix::ordercolumn ( const ArcsMat< M, N, T > & U,
const ArcsMat< P, Q, R > & u )
constexpr

並び替え指定横ベクトルuが昇順になるように,行列Uの列を並び替える関数 (戻り値渡し版のみ)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 並び替え指定横ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[in]u並び替え指定横ベクトル
戻り値
出力行列

◆ ordercolumn_and_vec()

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = size_t>
void ARCS::ArcsMatrix::ordercolumn_and_vec ( ArcsMat< M, N, T > & UY,
ArcsMat< P, Q, R > & uy )
constexpr

並び替え指定横ベクトルuが昇順になるように,行列Uの列と指定横ベクトルの両方を並び替える関数 (引数渡し版のみ)

テンプレート引数
M,N,T,P,Q,R入出力行列の高さ, 幅, 要素の型, 並び替え指定横ベクトルの高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]uy並び替え指定横ベクトル

◆ orderrow()

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = size_t>
ArcsMat< M, N, T > ARCS::ArcsMatrix::orderrow ( const ArcsMat< M, N, T > & U,
const ArcsMat< P, Q, R > & u )
constexpr

並び替え指定縦ベクトルuが昇順になるように,行列Uの行を並び替える関数 (戻り値渡し版のみ)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 並び替え指定縦ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[in]u並び替え指定縦ベクトル
戻り値
出力行列

◆ orderrow_and_vec()

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = size_t>
void ARCS::ArcsMatrix::orderrow_and_vec ( ArcsMat< M, N, T > & UY,
ArcsMat< P, Q, R > & uy )
constexpr

並び替え指定縦ベクトルuが昇順になるように,行列Uの行と指定縦ベクトルの両方を並び替える関数 (引数渡し版のみ)

テンプレート引数
M,N,T,P,Q,R入出力行列の高さ, 幅, 要素の型, 並び替え指定縦ベクトルの高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]uy並び替え指定縦ベクトル

◆ pinv() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< N, M, T > ARCS::ArcsMatrix::pinv ( const ArcsMat< M, N, T > & A)
constexpr

Moore-Penroseの疑似逆行列を返す関数(戻り値返し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
戻り値
出力行列

◆ pinv() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::pinv ( const ArcsMat< M, N, T > & A,
ArcsMat< P, Q, R > & Y )
constexpr

Moore-Penroseの擬似逆行列を返す関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]Y出力行列

◆ QR() [1/2]

template<size_t M, size_t N, typename T = double>
std::tuple< ArcsMat< M, M, T >, ArcsMat< M, N, T > > ARCS::ArcsMatrix::QR ( const ArcsMat< M, N, T > & A)
constexpr

QR分解(タプル返し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
戻り値
(Q, R) (ユニタリ行列, 上三角行列)のタプル

◆ QR() [2/2]

template<size_t M, size_t N, typename T = double, size_t MQ, size_t NQ, typename TQ = double, size_t MR, size_t NR, typename TR = double>
void ARCS::ArcsMatrix::QR ( const ArcsMat< M, N, T > & A,
ArcsMat< MQ, NQ, TQ > & Q,
ArcsMat< MR, NR, TR > & R )
constexpr

QR分解(引数渡し版)

テンプレート引数
M,N,T,MQ,NQ,TQ,MQ,NQ,TQ入力行列,Q,R行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]Qユニタリ行列 Q行列
[out]R上三角行列 R行列

◆ ramp()

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::ramp ( void )
constexpr

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

テンプレート引数
M,N,T行列の高さ, 幅, 要素の型
戻り値
縦ベクトル

◆ rank()

template<size_t M, size_t N, typename T = double>
size_t ARCS::ArcsMatrix::rank ( const ArcsMat< M, N, T > & A,
const T eps = ArcsMat<M,N,T>::EPSILON )
constexpr

行列の階数を返す関数(戻り値返し版のみ)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
戻り値
結果

◆ real() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::real ( const ArcsMat< M, N, std::complex< T > > & U)
constexpr

複素数行列要素の実数部を計算する関数(戻り値渡し版, 複素数版特殊化)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ real() [2/2]

template<size_t M, size_t N, typename T = std::complex<double>, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::real ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

複素数行列要素の実数部を取得する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列と出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ Schur() [1/2]

template<size_t M, size_t N, typename T = double>
std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMatrix::Schur ( const ArcsMat< M, N, T > & A)
constexpr

Schur分解(タプル返し版) この関数はMATLABとは異なる解を出力する、ただしもちろん、A = USU' は成立

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
戻り値
(ユニタリ行列U, 上三角行列または疑似上三角行列S)のタプル

◆ Schur() [2/2]

template<size_t M, size_t N, typename T = double, size_t MU, size_t NU, typename TU = double, size_t MS, size_t NS, typename TS = double>
void ARCS::ArcsMatrix::Schur ( const ArcsMat< M, N, T > & A,
ArcsMat< MU, NU, TU > & U,
ArcsMat< MS, NS, TS > & S )
constexpr

複素Schur分解(引数渡し版) この関数はMATLABとは異なる解を出力する、ただしもちろん、A = USU' は成立

テンプレート引数
M,N,T,MU,NU,TU,MS,NS,TS入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]Uユニタリ行列
[out]S上三角行列または疑似上三角行列

◆ setcolumn() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::setcolumn ( ArcsMat< M, N, T > & UY,
const ArcsMat< P, Q, R > & u,
const size_t n )
constexpr

指定した列を縦ベクトルで上書きする関数 (引数渡し版)

テンプレート引数
M,N,T,P,Q,R入出力行列の高さ, 幅, 要素の型, 入力ベクトルの高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]u入力ベクトル
[in]n上書きしたい列

◆ setcolumn() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::setcolumn ( const ArcsMat< P, Q, R > & u,
const size_t n,
const ArcsMat< M, N, T > & U )
constexpr

指定した列を縦ベクトルで上書きする関数 (戻り値渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 入力ベクトルの高さ, 幅, 要素の型
引数
[in]u入力ベクトル
[in]n上書きしたい列
[in]U入力行列
戻り値
出力ベクトル

◆ sethvector() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::sethvector ( ArcsMat< M, N, T > & UY,
const ArcsMat< P, Q, R > & u,
const size_t m,
const size_t n )
constexpr

指定位置に横ベクトルで上書きする関数 (引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 入力ベクトルの高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]u入力ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目

◆ sethvector() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::sethvector ( const ArcsMat< P, Q, R > & u,
const size_t m,
const size_t n,
const ArcsMat< M, N, T > & U )
constexpr

指定位置に横ベクトルで上書きする関数 (戻り値渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 入力ベクトルの高さ, 幅, 要素の型
引数
[in]u入力ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目
[in]U入力行列
戻り値
出力行列

◆ setrow() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::setrow ( ArcsMat< M, N, T > & UY,
const ArcsMat< P, Q, R > & u,
const size_t m )
constexpr

指定した行を横ベクトルで上書きする関数 (引数渡し版)

テンプレート引数
M,N,T,P,Q,R入出力行列の高さ, 幅, 要素の型, 入力ベクトルの高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]u入力ベクトル
[in]m上書きしたい行

◆ setrow() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::setrow ( const ArcsMat< P, Q, R > & u,
const size_t m,
const ArcsMat< M, N, T > & U )
constexpr

指定した行を横ベクトルで上書きする関数 (戻り値渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 入力ベクトルの高さ, 幅, 要素の型
引数
[in]u入力ベクトル
[in]m上書きしたい行
[in]U入力行列
戻り値
出力ベクトル

◆ setsubmatrix() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::setsubmatrix ( ArcsMat< M, N, T > & UY,
const ArcsMat< P, Q, R > & U,
const size_t m,
const size_t n )
constexpr

小行列を行列の指定位置に上書きする関数 (引数渡し版)

テンプレート引数
M,N,T,P,Q,R入出力行列の高さ, 幅, 要素の型, 入力行列の高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]U書き込む小行列
[in]m上書きしたい縦位置(小行列の上)
[in]n上書きしたい横位置(小行列の左)

◆ setsubmatrix() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::setsubmatrix ( const ArcsMat< P, Q, R > & Us,
const size_t m,
const size_t n,
const ArcsMat< M, N, T > & U )
constexpr

小行列を行列の指定位置に上書きする関数 (戻り値渡し版)

テンプレート引数
M,N,T,P,Q,R入出力行列の高さ, 幅, 要素の型, 入力行列の高さ, 幅, 要素の型
引数
[in]Us書き込む小行列
[in]m上書きしたい縦位置(小行列の上)
[in]n上書きしたい横位置(小行列の左)
[in]U入力行列
戻り値
出力行列

◆ setvvector() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::setvvector ( ArcsMat< M, N, T > & UY,
const ArcsMat< P, Q, R > & u,
const size_t m,
const size_t n )
constexpr

指定位置に縦ベクトルで上書きする関数 (引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 入力ベクトルの高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]u入力ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目

◆ setvvector() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::setvvector ( const ArcsMat< P, Q, R > & u,
const size_t m,
const size_t n,
const ArcsMat< M, N, T > & U )
constexpr

指定位置に縦ベクトルで上書きする関数 (戻り値渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 入力ベクトルの高さ, 幅, 要素の型
引数
[in]u入力ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目
[in]U入力行列
戻り値
出力行列

◆ shiftdown() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::shiftdown ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t m = 1 )
constexpr

行列の各要素を下にm行分シフトする関数(上段の行はゼロになる)(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]mシフトする行数(デフォルト値 = 1)

◆ shiftdown() [2/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::shiftdown ( const ArcsMat< M, N, T > & U,
const size_t m = 1 )
constexpr

行列の各要素を下にm行分シフトする関数(上段の行はゼロになる)(戻り値渡し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[in]mシフトする行数(デフォルト値 = 1)
戻り値
出力行列

◆ shiftleft() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::shiftleft ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t n = 1 )
constexpr

行列の各要素を左にn列分シフトする関数(右段の列はゼロになる)(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]nシフトする列数(デフォルト値 = 1)

◆ shiftleft() [2/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::shiftleft ( const ArcsMat< M, N, T > & U,
const size_t n = 1 )
constexpr

行列の各要素を左にn列分シフトする関数(右段の列はゼロになる)(戻り値渡し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[in]nシフトする列数(デフォルト値 = 1)
戻り値
Y 出力行列

◆ shiftright() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::shiftright ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t n = 1 )
constexpr

行列の各要素を右にn列分シフトする関数(左段の列はゼロになる)(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]nシフトする列数(デフォルト値 = 1)

◆ shiftright() [2/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::shiftright ( const ArcsMat< M, N, T > & U,
const size_t n = 1 )
constexpr

行列の各要素を右にn列分シフトする関数(左段の列はゼロになる)(戻り値渡し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[in]nシフトする列数(デフォルト値 = 1)
戻り値
出力行列

◆ shiftup() [1/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::shiftup ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t m = 1 )
constexpr

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

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]mシフトする行数(デフォルト値 = 1)

◆ shiftup() [2/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::shiftup ( const ArcsMat< M, N, T > & U,
const size_t m = 1 )
constexpr

行列の各要素を上に1行分シフトする関数(下段の行はゼロになる)(戻り値渡し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[in]mシフトする行数(デフォルト値 = 1)
戻り値
Y 出力行列

◆ sign() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::sign ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の符号関数を計算する関数(戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ sign() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::sign ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

行列要素の符号関数を計算する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力ベクトルと出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ sin() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::sin ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の正弦関数を計算する関数(戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ sin() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::sin ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

行列要素の正弦関数を計算する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力ベクトルと出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ sqrt() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::sqrt ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の平方根を計算する関数(戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ sqrt() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::sqrt ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

行列要素の平方根を計算する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力ベクトルと出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ sum()

template<size_t M, size_t N, typename T = double>
T ARCS::ArcsMatrix::sum ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の総和を返す関数(戻り値渡し版のみ)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
結果

◆ sumcolumn() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< 1, N, T > ARCS::ArcsMatrix::sumcolumn ( const ArcsMat< M, N, T > & U)
constexpr

各列の総和を計算して横ベクトルを出力する関数 (戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
出力ベクトル

◆ sumcolumn() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::sumcolumn ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y )
constexpr

各列の総和を計算して横ベクトルを出力する関数 (引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[out]y出力ベクトル

◆ sumrow() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, 1, T > ARCS::ArcsMatrix::sumrow ( const ArcsMat< M, N, T > & U)
constexpr

各行の総和を計算して縦ベクトルを出力する関数 (戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
出力ベクトル

◆ sumrow() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::sumrow ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y )
constexpr

各行の総和を計算して縦ベクトルを出力する関数 (引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[out]y出力ベクトル

◆ SVD() [1/2]

template<size_t M, size_t N, typename T = double>
std::tuple< ArcsMat< M, M, T >, ArcsMat< M, N, T >, ArcsMat< N, N, T > > ARCS::ArcsMatrix::SVD ( const ArcsMat< M, N, T > & A)
constexpr

SVD特異値分解(タプル返し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
戻り値
(U, S, V) (U行列, Σ行列, V行列)のタプル

◆ SVD() [2/2]

template<size_t M, size_t N, typename T = double, size_t MU, size_t NU, typename TU = double, size_t MS, size_t NS, typename TS = double, size_t MV, size_t NV, typename TV = double>
void ARCS::ArcsMatrix::SVD ( const ArcsMat< M, N, T > & A,
ArcsMat< MU, NU, TU > & U,
ArcsMat< MS, NS, TS > & S,
ArcsMat< MV, NV, TV > & V )
constexpr

SVD特異値分解(引数渡し版)

テンプレート引数
M,N,T,MU,NU,TU,MS,NS,TS,MV,NV,TV入力行列,U,Σ,V行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]UU行列
[out]SΣ行列
[out]VV行列

◆ swapcolumn() [1/2]

template<size_t M, size_t N, typename T = double>
void ARCS::ArcsMatrix::swapcolumn ( ArcsMat< M, N, T > & UY,
const size_t n1,
const size_t n2 )
constexpr

指定した列と列を入れ替える関数 (引数渡し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]n1指定列1
[in]n2指定列2

◆ swapcolumn() [2/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::swapcolumn ( const size_t n1,
const size_t n2,
const ArcsMat< M, N, T > & U )
constexpr

指定した列と列を入れ替える関数 (戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]n1指定列1
[in]n2指定列2
[in]U入力行列
戻り値
Y 出力行列

◆ swaprow() [1/2]

template<size_t M, size_t N, typename T = double>
void ARCS::ArcsMatrix::swaprow ( ArcsMat< M, N, T > & UY,
const size_t m1,
const size_t m2 )
constexpr

指定した行と行を入れ替える関数 (引数渡し版)

テンプレート引数
M,N,T入出力行列の高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]m1指定行1
[in]m2指定行2

◆ swaprow() [2/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::swaprow ( const size_t m1,
const size_t m2,
const ArcsMat< M, N, T > & U )
constexpr

指定した行と行を入れ替える関数 (戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]m1指定行1
[in]m2指定行2
[in]U入力行列
戻り値
Y 出力行列

◆ tan() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::tan ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の正接関数を計算する関数(戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ tan() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::tan ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

行列要素の正接関数を計算する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力ベクトルと出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ tanh() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::tanh ( const ArcsMat< M, N, T > & U)
constexpr

行列要素の双曲線正接関数を計算する関数(戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ tanh() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::tanh ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

行列要素の双曲線正接関数を計算する関数(引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力ベクトルと出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ tp() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< N, M, T > ARCS::ArcsMatrix::tp ( const ArcsMat< M, N, T > & U)
constexpr

転置行列を返す関数 (戻り値渡し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ tp() [2/2]

template<size_t M, size_t N, typename T = double, size_t P, size_t Q, typename R = double>
void ARCS::ArcsMatrix::tp ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
constexpr

転置行列を返す関数 (引数渡し版)

テンプレート引数
M,N,T,P,Q,R入力行列の高さ, 幅, 要素の型, 結果の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y結果

◆ trace()

template<size_t M, size_t N, typename T = double>
T ARCS::ArcsMatrix::trace ( const ArcsMat< M, N, T > & U)
constexpr

行列のトレースを返す関数(戻り値渡し版のみ)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
戻り値
結果

◆ vec() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M *N, 1, T > ARCS::ArcsMatrix::vec ( const ArcsMat< M, N, T > & U)
constexpr

vec作用素(行列→縦ベクトル) (戻り値返し版)

テンプレート引数
M,N,T入力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]y出力ベクトル

◆ vec() [2/2]

template<size_t M, size_t N, typename T = double, size_t MY, size_t NY, typename TY = double>
void ARCS::ArcsMatrix::vec ( const ArcsMat< M, N, T > & U,
ArcsMat< MY, NY, TY > & y )
constexpr

vec作用素(行列→縦ベクトル) (引数渡し版)

テンプレート引数
M,N,T,MY,NY,TY入力行列と出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[out]y出力ベクトル

◆ vecinv() [1/2]

template<size_t MY, size_t NY, size_t M, size_t N, typename T = double>
ArcsMat< MY, NY, T > ARCS::ArcsMatrix::vecinv ( const ArcsMat< M, N, T > & u)
constexpr

vec作用素の逆(縦ベクトル→行列) (戻り値返し版)

テンプレート引数
MY,NY出力行列の高さ, 幅
M,N,T入力縦ベクトルの高さ, 幅, 要素の型
引数
[in]u入力縦ベクトル
戻り値
再構成後の行列

◆ vecinv() [2/2]

template<size_t M, size_t N, typename T = double, size_t MY, size_t NY, typename TY = double>
void ARCS::ArcsMatrix::vecinv ( const ArcsMat< M, N, T > & u,
ArcsMat< MY, NY, TY > & Y )
constexpr

vec作用素の逆(縦ベクトル→行列) (引数渡し版)

テンプレート引数
M,N,T,MY,NY,TY入力縦ベクトルと出力行列の高さ, 幅, 要素の型
引数
[in]u入力縦ベクトル
[out]Y再構成後の行列

◆ zeros()

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMatrix::zeros ( void )
constexpr

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

テンプレート引数
M,N,T行列の高さ, 幅, 要素の型
戻り値
零行列