行列(二次元配列)演算関数一覧
関数名 | dmat_add |
概略 | 行列の和を計算する |
ヘッダ | matrix.h |
書式 | double **dmat_add(double **mat1, double **mat2, double **mat3, int m, int n) |
機能説明 |
mat1[0..m-1][0..n-1]に対して和を記憶する. mat1[i][j]=mat2[i][j]+mat3[i][j] for any i,j |
引き数 |
mat1,mat2,mat3: 行列へのポインタ m:行数 n:列数 |
戻り値 | mat1へのポインタ |
関数名 | dmat_alloc |
概略 | 行列(二次元配列)の領域を確保する |
ヘッダ | matrix.h |
書式 | double **dmat_alloc(int m, int n) |
機能説明 | double型でm行n列の二次元配列の領域を確保し,すべての要素を0に初期化する. |
引き数 | m:行数 n:列数 |
戻り値 | 行列へのポインタ |
例 |
double **mat; /* 変数の宣言 */ |
関数名 | dmat_clear |
概略 | 零行列にする |
ヘッダ | matrix.h |
書式 | double **dmat_clear(double **mat, int m, int n) |
機能説明 | mat[0..m-1][0..n-1]の全要素を零に初期化する. |
引き数 |
mat: 行列へのポインタ m:行数 n:列数 |
戻り値 | matへのポインタ |
関数名 | dmat_col_swap |
概略 | 列要素を入れ替える |
ヘッダ | matrix.h |
書式 | double **dmat_col_swap(double **mat, int m, int j1, int j2) |
機能説明 | matのi列とj列を入れ替える.すなわちmat[i][j1] <-> mat[i][j2] |
引き数 | mat: 行列へのポインタ m:行サイズ j1,j2:交換する列番号(<列数n) |
戻り値 | matへのポインタ |
関数名 | dmat_copy |
概略 | 行列の要素を複写する |
ヘッダ | matrix.h |
書式 | double **dmat_copy(double **mat1, double **mat2, int m, int n) |
機能説明 | mat1[i][j]:=mat2[i][j] for any i,j |
引き数 | mat1,mat2: 行列へのポインタm:行数 n:列数 |
戻り値 | mat1へのポインタ |
関数名 | dmat_free |
概略 | 行列の領域を解放する |
ヘッダ | matrix.h |
書式 | void dmat_free(double **mat, int m, int n) |
機能説明 | 二次元配列matのメモリ領域を開放する |
引き数 | mat: 行列へのポインタ m:行数 n:列数 |
戻り値 | なし |
関数名 | dmat_identity |
概略 | 単位行列化する |
ヘッダ | matrix.h |
書式 | double **dmat_identity(double **mat, int n) |
機能説明 |
dmat_clear(mat,n,n); and then mat[i][i]:=1 for any i. |
引き数 | mat: 一次元配列へのポインタ n: 行列のサイズ |
戻り値 | matへのポインタ |
関数名 | dmat_mul |
概略 | 行列の積を求める |
ヘッダ | matrix.h |
書式 | double **dmat_mul(double **mat1, double **mat2, double **mat3, int m, int p, int n) |
機能説明 |
mat1[0..m-1][0..n-1] mat2[0..m-1][0..p-1] mat3[0..p-1][0..n-1] mat1[i][j] = sum of mat2[i][k]*mat3[k][j] for all k |
引き数 | mat1,mat2,mat3: 行列へのポインタ m:行数 n:列数 |
戻り値 | mat1へのポインタ |
関数名 | dmat_print |
概略 | 行列を表示する |
ヘッダ | matrix.h |
書式 | void dmat_print(double **mat, int m, int n) |
機能説明 | mat[0..m-1][0..n-1]の行列を表示する |
引き数 |
mat: 行列へのポインタ m:行数 n:列数 |
戻り値 | なし |
関数名 | dmat_sub |
概略 | 行列の差を求める |
ヘッダ | matrix.h |
書式 | double **dmat_sub(double **mat1, double **mat2, double **mat3, int m, int n) |
機能説明 |
mat1[0..m-1][0..n-1]に二つの行列の差を記憶する. mat1[i][j]:=mat2[i][j]-mat3[i][j] for any i,j |
引き数 |
mat1,mat2,mat3: 行列へのポインタ m:行数 n:列数 |
戻り値 | mat1へのポインタ |
関数名 | dmat_mul_scalar |
概略 | 行列をスカラー倍する |
ヘッダ | matrix.h |
書式 | double **dmat_mul_scalar(double **mat, double c, int m, int n) |
機能説明 |
mat[i][j] := c * mat[i][j] for any i,j 要素は上書きされる |
引き数 | mat: 行列 c: 実数倍 m: 行数 n: 列数 |
戻り値 | matへのポインタ |
関数名 | dmat_mul_aaT |
概略 | 行列の積 |
ヘッダ | matrix.h |
書式 | double **dmat_mul_aaT(double **aaT, double **a, int m, int n) |
機能説明 |
aaT[0..m-1][0..m-1]にa[0..m-1][0..n-1]とその転置行列との積を代入する. aaT := a * Transpose(a) |
引き数 |
aaT: 2次元配列へのポインタ([0..m-1][0..m-1]) a: 行列へのポインタ([0..m-1][0..n-1]) m:行数, n:列数 |
戻り値 | aaTへのポインタ |
関数名 | dmat_mul_aTa |
概略 | 行列の積 |
ヘッダ | matrix.h |
書式 | double **dmat_mul_aTa(double **aTa, double **a, int m, int n) |
機能説明 |
aTa[0..n-1][0..n-1]にa[0..m-1][0..n-1]の積を代入する. aTa := aT * a |
引き数 |
aTa: 2次元配列へのポインタ a: 行列へのポインタ m:行数, n:列数 |
戻り値 | aTaへのポインタ |
関数名 | dmat_mul_aTb |
概略 | 行列とベクトルの積 |
ヘッダ | matrix.h |
書式 | double *dmat_mul_aTb(double *aTb, double **a, double *b, int m, int n) |
機能説明 |
a[0..m-1][0..n-1]の転置行列とb[0..m-1]の積を求め,aTb[0..n-1]に記憶する aTb := a * b 最小2乗解を求めるときに用いる. |
引き数 |
aTb, b: 一次元配列へのポインタ a: 行列へのポインタ m:行数, n:列数 |
戻り値 | aへのポインタ |
関数名 | dmat_mul_vector |
概略 | 行列とベクトルの積 |
ヘッダ | matrix.h |
書式 | double *dmat_mul_vector(double *a, double **mat, double *b, int m, int n) |
機能説明 |
mat[0..m-1][0..n-1]とb[0..n-1]の積をa[0..m-1]に記憶する. a := mat * b |
引き数 |
a,b: 一次元配列へのポインタ mat: 行列へのポインタ m:行数, n:列数 |
戻り値 | aへのポインタ |
関数名 | dmat_norm |
概略 | 行列の2乗ノルムを求める |
ヘッダ | matrix.h |
書式 | double dmat_norm(double **mat, int m, int n) |
機能説明 | 行列の2乗ノルムを求める. sqrt(sum of mat[i][j]^2 for all i,j) |
引き数 | mat: 行列へのポインタm:行数 n:列数 |
戻り値 | 2乗ノルム |
関数名 | dmat_row_swap |
概略 | ある行の中から絶対値最大の要素位置を求める |
ヘッダ | matrix.h |
書式 | double **dmat_row_swap(double **mat, int i1, int i2, int n) |
機能説明 |
The i1-th row is swapped with the i2-th row. swap(mat[i1][j],mat[i2][j]) for j=0..n-1 |
引き数 | mat: 行列へのポインタm:行数 n:列数 |
戻り値 | matへのポインタ |
関数名 | dmat_row_abs_max_num |
概略 | ある行の中から絶対値最大の要素位置を求める |
ヘッダ | matrix.h |
書式 | int dmat_row_abs_max_num(double **mat, int i, int n) |
機能説明 | 2乗ノルム |
引き数 | mat: 行列へのポインタm:行数 n:列数 |
戻り値 | 列番号を返す |
関数名 | dmat_trace |
概略 | 行列のトレースを求める. |
ヘッダ | matrix.h |
書式 | double dmat_trace(double **mat, int n) |
機能説明 |
mat[0..n-1][0..n-1]のトレースを求める. sum of mat[i][i] for i=0..n-1 |
引き数 | mat: 行列へのポインタm:行数 n:列数 |
戻り値 | 2乗ノルム |
関数名 | dmat_trans |
概略 | 行列の転置を求める |
ヘッダ | matrix.h |
書式 | double **dmat_trans(double **mat1, double **mat2, int m, int n) |
機能説明 |
mat1[0..m-1][0..n-1]に転置行列を記憶する mat1[i][j] := mat2[j][i] (i=0..m-1, j=0..n-1) |
引き数 | mat: 行列へのポインタm:行数 n:列数 |
戻り値 | mat1へのポインタ |
関数名 | dmat_rx |
概略 | 回転行列 |
ヘッダ | matrot.h |
書式 | double **dmat_rx(double **mat, double rad) |
機能説明 | x軸まわりに角度radの回転行列を求める |
引き数 | mat: 2次元配列へのポインタrad: x軸まわりの回転角度[単位rad] |
戻り値 | matへのポインタ |
関数名 | dmat_ry |
概略 | 回転行列 |
ヘッダ | matrot.h |
書式 | double **dmat_ry(double **mat, double rad) |
機能説明 | y軸まわりに角度radの回転行列を求める |
引き数 | mat: 2次元配列へのポインタrad: y軸まわりの回転角度[単位rad] |
戻り値 | matへのポインタ |
関数名 | dmat_rz |
概略 | 回転行列 |
ヘッダ | matrot.h |
書式 | double **dmat_rz(double **mat, double rad) |
機能説明 | z軸まわりに角度radの回転行列を求める |
引き数 | mat: 2次元配列へのポインタrad: z軸まわりの回転角度[単位rad] |
戻り値 | matへのポインタ |
関数名 | dmat_is_rot |
概略 | 回転行列か否かを評価する |
ヘッダ | matrot.h |
書式 | int dmat_is_rot(double **mat, int n, double eps) |
機能説明 | |
引き数 | mat: 2次元配列へのポインタn: 行列のサイズeps: 評価の閾値 |
戻り値 | TRUE / FALSE |
関数名 | dmat_is_orthogonal |
概略 | 直行行列か否かを評価する |
ヘッダ | matrot.h |
書式 | int dmat_is_orthogonal(double **u, int m, int n, double eps) |
機能説明 | |
引き数 | mat: 2次元配列へのポインタn: 行サイズn: 列サイズeps: 評価の閾値 |
戻り値 | TRUE / FALSE |
関数名 | dmat_is_identity |
概略 | 単位行列か否かを評価する |
ヘッダ | matrot.h |
書式 | int dmat_is_identity( double **mat, int n, double eps ) |
機能説明 | |
引き数 | mat: 2次元配列へのポインタn: 行列サイズeps: 評価の閾値 |
戻り値 | TRUE / FALSE |
関数名 | dmat_from_RollPitchYaw |
概略 | ロール・ピッチ・ヨー角から回転行列を求める |
ヘッダ | matrot.h |
書式 | double **dmat_from_RollPitchYaw(double **mat, double *rad) |
機能説明 | |
引き数 | rad: ロール・ピッチ・ヨー角[rad]mat: 3行3列の2次元配列へのポインタ |
戻り値 | matへのポインタ |
関数名 | dmat_to_RollPitchYaw |
概略 | 回転行列からロール・ピッチ・ヨー角を求める |
ヘッダ | matrot.h |
書式 | double *dmat_to_RollPitchYaw(double *rad, double **mat) |
機能説明 | 2乗ノルム |
引き数 | rad: ロール・ピッチ・ヨー角[rad]mat: 3行3列の2次元配列へのポインタ |
戻り値 | radへのポインタ |
関数名 | dmat_to_AxisAngle |
概略 | 回転行列から回転軸とその周りの回転角を求める |
ヘッダ | matrot.h |
書式 | double *dmat_to_AxisAngle(double *rad, double **mat) |
機能説明 | 2乗ノルム |
引き数 | rad: ロール・ピッチ・ヨー角[rad]mat: 3行3列の2次元配列へのポインタ |
戻り値 | radへのポインタ |
関数名 | dmat_from_AxisAngle |
概略 | 回転軸とその周りの回転角から回転行列を求める |
ヘッダ | matrot.h |
書式 | double **dmat_from_AxisAngle(double **mat, double *rad) |
機能説明 | 2乗ノルム |
引き数 | rad: ロール・ピッチ・ヨー角[rad]mat: 3行3列の2次元配列へのポインタ |
戻り値 | matへのポインタ |
関数名 | |
概略 | |
ヘッダ | |
書式 | |
機能説明 | |
引き数 | |
戻り値 | |
関数名 | dvec_inner_product |
概略 | ベクトルの内積を求める |
ヘッダ | matrix.h |
書式 | double dvec_inner_product(double *v1, double *v2, int n) |
機能説明 | v1[0..n-1]とv2[0..n-1]の内積を求める |
引き数 | v1, v2: 一次元配列へのポインタn: ベクトルのサイズ |
戻り値 | 内積値 |