行列

行列型を扱う関数は、原則として、どの行列型であるかに応じて関数名が決められています。 SMatrix型の場合は関数名がsmで、 LMatrix型の場合は関数名がlmで、 FMatrix型の場合は関数名がfmで、 DMatrix型の場合は関数名がdmで始まります。 さらに、戻り値のメモリ解放を行う必要がある関数は、xで関数名が始まります。 すなわち、この場合、それぞれの行列型において、xsm、xlm、xfm、xdmで始まることになります。 以下では、ほとんどの場合、この接頭辞の部分を省いて説明がしてあります。

行列型

目的
行列型は、行列演算を行う関数の引数や戻り値として用いられる型です。 short型を扱うためのSMatrix型、long型を扱うためのLMatrix型、 float型を扱うためのFMatrix型、double型を扱うためのDMatrix型が 用意されています。

書式
typedef struct _SMatrix { long row; long col; short **data; short **imag; } *SMatrix; typedef struct _LMatrix { long row; long col; long **data; long **imag; } *LMatrix; typedef struct _FMatrix { long row; long col; float **data; float **imag; } *FMatrix; typedef struct _DMatrix { long row; long col; double **data; double **imag; } *DMatrix;

メンバ
row
行の大きさを保持します。
col
列の大きさを保持します。
data
実部のデータを保持します。
imag
虚部のデータを保持します。虚部が存在しない場合はNULLであることがあります。

説明
メモリ確保するには、メモリ確保関数 を呼び出す必要があります。 メモリ確保された行列型xがあった場合、その行の大きさは x->rowで、その列の大きさはx->colで取得できます。 また、実部の1行1列目(2次元配列の0行0列目)、1行2列目(2次元配列の0行1列目)の要素を取り出すには、 x->data[0][0]x->data[0][1]とし、 同様に、虚部の1行1列目、1行2列目の要素を取り出すには、 x->imag[0][0]x->imag[0][1] とします。

関連項目
メモリ

メモリ

目的
行列型のメモリ確保や解放を行います。

書式
#include <sp/matrix.h> LMatrix xlmalloc(long row, long col); DMatrix xdmalloc(long row, long col); void xlmfree(LMatrix matrix); void xdmfree(DMatrix matrix); void lmialloc(LMatrix matrix); void dmialloc(DMatrix matrix); void lmifree(LMatrix matrix); void dmifree(DMatrix matrix); LMatrix xlmrialloc(long row, long col); DMatrix xdmrialloc(long row, long col);

引数
matrix
入力行列
row
行の大きさ
col
列の大きさ

戻り値
戻り値が行列型の場合は、メモリ確保された行列型が返ります。 行列データの中身は初期化されません。

説明
戻り値が行列型の場合は、使用しなくなったらメモリの解放をして下さい。 それぞれの関数は、以下のような処理を行います。

関連項目
行列初期化

行列初期化

目的
行列型の初期化を行います。

書式
#include <sp/matrix.h> LMatrix xlmnums(long row, long col, long value); DMatrix xdmnums(long row, long col, double value); void lmnums(LMatrix mat, long row, long col, long value); void dmnums(DMatrix mat, long row, long col, double value); void lminums(LMatrix mat, long row, long col, long value); void dminums(DMatrix mat, long row, long col, double value); LMatrix xlmrinums(long row, long col, long value); DMatrix xdmrinums(long row, long col, double value); LMatrix xlmzeros(long row, long col); DMatrix xdmzeros(long row, long col); void lmzeros(long row, long col); void dmzeros(long row, long col); void lmizeros(long row, long col); void dmizeros(long row, long col); LMatrix xlmrizeros(long row, long col); DMatrix xdmrizeros(long row, long col); LMatrix xlmones(long row, long col); DMatrix xdmones(long row, long col); void lmones(long row, long col); void dmones(long row, long col); void lmiones(long row, long col); void dmiones(long row, long col); LMatrix xlmriones(long row, long col); DMatrix xdmriones(long row, long col); LMatrix xlmeye(long row, long col); DMatrix xdmeye(long row, long col); DMatrix xdminitrow(long row, double j, double incr, double n); DMatrix xdminitcol(long col, double j, double incr, double n); void lmreal(LMatrix matrix); void dmreal(DMatrix matrix); void lmimag(LMatrix matrix); void dmimag(DMatrix matrix);

引数
matrix
入力行列
row
行の大きさ
col
列の大きさ
j
行もしくは列の最初の要素の値
incr
行もしくは列の要素の増分
n
行もしくは列の最後の要素の値
value
初期化する際の行列の要素の値

戻り値
戻り値が行列型の場合は、メモリ確保された行列型が返ります。

説明
戻り値が行列型の場合は、使用しなくなったらメモリの解放をして下さい。 それぞれの関数は、以下のような処理を行います。

関連項目
メモリ

行列のコピーなど

目的
行列型のコピーやペーストなどを行います。

書式
#include <sp/matrix.h> LMatrix xlmclone(LMatrix x); DMatrix xdmclone(DMatrix x); void lmcopyrow(LMatrix mat, long row, LVector vec); void dmcopyrow(DMatrix mat, long row, DVector vec); void lmcopycol(LMatrix mat, long col, LVector vec); void dmcopycol(DMatrix mat, long col, DVector vec); void lmpasterow(LMatrix mat, long row, LVector vec, long offset, long length, int overlap); void dmpasterow(DMatrix mat, long row, DVector vec, long offset, long length, int overlap); void lmpastecol(LMatrix mat, long col, LVector vec, long offset, long length, int overlap); void dmpastecol(DMatrix mat, long col, DVector vec, long offset, long length, int overlap);

引数
x
入力行列
mat
貼り付け先の行列
row
貼り付け先の行
col
貼り付け先の列
vec
コピーするベクトル
offset
ベクトルをコピーするときの開始位置
length
ベクトルをコピーする長さ
overlap
この値が非零の場合は、加算処理を行う。

戻り値
戻り値が行列型の場合は、メモリ確保された行列型が返ります。

説明
戻り値が行列型の場合は、使用しなくなったらメモリの解放をして下さい。 それぞれの関数は、以下のような処理を行います。

関連項目
メモリ

行列からのデータの取り出し

目的
行列型からデータを取り出します。

書式
#include <sp/matrix.h> LVector xlmcutrow(LMatrix mat, long row, long offset, long length); DVector xdmcutrow(DMatrix mat, long row, long offset, long length); LVector xlmcutcol(LMatrix mat, long col, long offset, long length); DVector xdmcutcol(DMatrix mat, long col, long offset, long length); LVector xlmextractrow(LMatrix mat, long row); DVector xdmextractrow(DMatrix mat, long row); LVector xlmextractcol(LMatrix mat, long col); DVector xdmextractcol(DMatrix mat, long col); LVector xlmrmax(LMatrix mat); LVector xdmrmax(DMatrix mat); LVector xlmrmin(LMatrix mat); LVector xdmrmin(DMatrix mat); LVector xlmrextract(LMatrix mat, LVector idx); DVector xdmrextract(DMatrix mat, LVector idx); LVector xlmcmax(LMatrix mat); LVector xdmcmax(DMatrix mat); LVector xlmcmin(LMatrix mat); LVector xdmcmin(DMatrix mat); LVector xlmcextract(LMatrix mat, LVector idx); DVector xdmcextract(DMatrix mat, LVector idx); double xdmmin(DMatrix mat, long *prow, long *pcol); double xdmmax(DMatrix mat, long *prow, long *pcol);

引数
mat
入力行列
row
取り出し元の行
col
貼り付け先の列
vec
コピーするベクトル
offset
コピーするときの開始位置
length
コピーする長さ
idx
行インデックス(何行目か)もしくは列インデックス(何列目か)を表すベクトル
prow
最大値もしくは最小値を取る要素の行インデックスを取得する場合に指定する。
col
最大値もしくは最小値を取る要素の列インデックスを取得する場合に指定する。

戻り値
戻り値がベクトル型の場合は、メモリ確保されたベクトル型が返ります。

説明
戻り値がベクトル型の場合は、使用しなくなったらメモリの解放をして下さい。 それぞれの関数は、以下のような処理を行います。

関連項目
ベクトル型メモリ

行列の計算

目的
行列の計算

書式
#include <sp/matrix.h> spBool dmlu(DMatrix A, LVector *index, double *det); DMatrix xdmlu(DMatrix A, LVector *index, double *det); DMatrix xdmluupper(DMatrix LU, LVector index); DMatrix xdmlulower(DMatrix LU, LVector index); DMatrix xdmludiag(DMatrix LU, LVector index); DMatrix xdmluinv(DMatrix LU, LVector index); DVector xdvlusolve(DMatrix LU, LVector index, DVector b); DMatrix xdminv(DMatrix A); DVector xdvmldivide(DMatrix A, DVector b); DVector xdvdiag(DMatrix A); DMatrix xdmdiag(DMatrix A); DMatrix xdmmakediag(DVector d); DMatrix xdmtranspose(DMatrix A); DMatrix xdmtimes(DMatrix A, DMatrix B); DVector xdvmtimes(DMatrix A, DVector x);

引数
AB
入力行列
LU
下三角行列と上三角行列を組み合わせた行列
index
LU分解した際の行の並べ替え情報。使用しなくなったらメモリを解放して下さい。
det
行列式の値。この値が不要であれば、NULLを指定することができます。
bx
入力ベクトル
d
対角行列の対角成分となるベクトル

戻り値
戻り値がベクトル型の場合は、メモリ確保されたベクトル型が、 行列型の場合は、メモリ確保された行列型が返ります。

説明
戻り値がベクトル型・行列型の場合は、使用しなくなったらメモリの解放をして下さい。 それぞれの関数は、以下のような処理を行います。

関連項目
ベクトル型メモリ

Last modified: "2012-06-09 00:33:44 hideki"