ベクトル型を扱う関数は、原則として、どのベクトル型であるかに応じて関数名が決められています。
SVector型の場合は関数名がsvで、
LVector型の場合は関数名がlvで、
FVector型の場合は関数名がfvで、
DVector型の場合は関数名がdvで始まります。
さらに、戻り値のメモリ解放を行う必要がある関数は、xで関数名が始まります。
すなわち、この場合、それぞれのベクトル型において、xsv、xlv、xfv、xdvで始まることになります。
以下では、ほとんどの場合、この接頭辞の部分を省いて説明がしてあります。
- 目的
- ベクトル型は、様々な信号処理関数の引数や戻り値として用いられる型です。
short型を扱うためのSVector型、long型を扱うためのLVector型、
float型を扱うためのFVector型、double型を扱うためのDVector型が
用意されています。
- 書式
-
typedef struct _SVector {
long length;
short *data;
short *imag;
} *SVector;
typedef struct _LVector {
long length;
long *data;
long *imag;
} *LVector;
typedef struct _FVector {
long length;
float *data;
float *imag;
} *FVector;
typedef struct _DVector {
long length;
double *data;
double *imag;
} *DVector;
- メンバ
-
- length
- ベクトルの長さを保持します。
- data
- 実部のデータを保持します。
- imag
- 虚部のデータを保持します。虚部が存在しない場合はNULLであることがあります。
- 説明
- メモリ確保するには、メモリ確保関数
を呼び出す必要があります。
メモリ確保されたベクトル型xがあった場合、その長さは
x->lengthで取得できます。
また、実部の0番目、1番目の要素を取り出すには、
x->data[0]、x->data[1]とし、
同様に、虚部の0番目、1番目の要素を取り出すには、
x->imag[0]、x->imag[1]
とします。
- 関連項目
-
メモリ
- 目的
- ベクトル型のメモリ確保や解放を行います。
- 書式
-
#include
SVector xsvalloc(long length);
LVector xlvalloc(long length);
FVector xfvalloc(long length);
DVector xdvalloc(long length);
void xsvfree(SVector vector);
void xlvfree(LVector vector);
void xfvfree(FVector vector);
void xdvfree(DVector vector);
void svialloc(SVector x);
void lvialloc(LVector x);
void fvialloc(FVector x);
void dvialloc(DVector x);
void svifree(SVector x);
void lvifree(LVector x);
void fvifree(FVector x);
void dvifree(DVector x);
SVector xsvrialloc(long length);
LVector xlvrialloc(long length);
FVector xfvrialloc(long length);
DVector xdvrialloc(long length);
SVector xsvrealloc(SVector x, long length);
LVector xlvrealloc(LVector x, long length);
FVector xfvrealloc(FVector x, long length);
DVector xdvrealloc(DVector x, long length);
- 引数
-
- x、vector
- 入力ベクトル
- length
- ベクトルの長さ
- 戻り値
- 戻り値がベクトル型の場合は、メモリ確保されたベクトル型が返ります。
ベクトルデータの中身は初期化されません。
- 説明
- 戻り値がベクトル型の場合は、使用しなくなったらメモリの解放をして下さい。
それぞれの関数は、以下のような処理を行います。
- alloc: 実部のメモリを確保します。
- free: メモリを解放します。
- ialloc: 虚部のメモリを確保します。
- ifree: 虚部のメモリを解放します。
- rialloc: 実部と虚部のメモリを確保します。
- realloc: 確保された領域のサイズを変更します。
- 関連項目
-
ベクトル初期化
- 目的
- ベクトル型の初期化を行います。
- 書式
-
#include
void svinit(SVector x, long m, long incr, long n);
void lvinit(LVector x, long m, long incr, long n);
void fvinit(FVector x, float m, float incr, float n);
void dvinit(DVector x, double m, double incr, double n);
SVector xsvinit(long m, long incr, long n);
LVector xlvinit(long m, long incr, long n);
FVector xfvinit(float m, float incr, float n);
DVector xdvinit(double m, double incr, double n);
void sviinit(SVector x, long m, long incr, long n);
void lviinit(LVector x, long m, long incr, long n);
void fviinit(FVector x, float m, float incr, float n);
void dviinit(DVector x, double m, double incr, double n);
SVector xsvriinit(long m, long incr, long n);
LVector xlvriinit(long m, long incr, long n);
FVector xfvriinit(float m, float incr, float n);
DVector xdvriinit(double m, double incr, double n);
SVector xsvnums(long length, long value);
LVector xlvnums(long length, long value);
FVector xfvnums(long length, float value);
DVector xdvnums(long length, double value);
SVector xsvzeros(long length);
LVector xlvzeros(long length);
FVector xfvzeros(long length);
DVector xdvzeros(long length);
SVector xsvones(long length);
LVector xlvones(long length);
FVector xfvones(long length);
DVector xdvones(long length);
SVector xsvrinums(long length, long value);
LVector xlvrinums(long length, long value);
FVector xfvrinums(long length, float value);
DVector xdvrinums(long length, double value);
SVector xsvrizeros(long length);
LVector xlvrizeros(long length);
FVector xfvrizeros(long length);
DVector xdvrizeros(long length);
SVector xsvriones(long length);
LVector xlvriones(long length);
FVector xfvriones(long length);
DVector xdvriones(long length);
void svnums(SVector x, long length, long value);
void lvnums(LVector x, long length, long value);
void fvnums(FVector x, long length, float value);
void dvnums(DVector x, long length, double value);
void svzeros(SVector x, long length);
void lvzeros(LVector x, long length);
void fvzeros(FVector x, long length);
void dvzeros(DVector x, long length);
void svones(SVector x, long length);
void lvones(LVector x, long length);
void fvones(FVector x, long length);
void dvones(DVector x, long length);
void svinums(SVector x, long length, long value);
void lvinums(LVector x, long length, long value);
void fvinums(FVector x, long length, float value);
void dvinums(DVector x, long length, double value);
void svizeros(SVector x, long length);
void lvizeros(LVector x, long length);
void fvizeros(FVector x, long length);
void dvizeros(DVector x, long length);
void sviones(SVector x, long length);
void lviones(LVector x, long length);
void fviones(FVector x, long length);
void dviones(DVector x, long length);
- 引数
-
- x
- 入力ベクトル
- length
- ベクトルの長さ
- m
- ベクトルの最初の要素の値
- incr
- ベクトルの要素の増分
- n
- ベクトルの最後の要素の値
- value
- 初期化する際のベクトルの要素の値
- 戻り値
- 戻り値がベクトル型の場合は、メモリ確保されたベクトル型が返ります。
- 説明
- 戻り値がベクトル型の場合は、使用しなくなったらメモリの解放をして下さい。
それぞれの関数は、以下のような処理を行います。
- init: ベクトルの実部の要素の開始値・増分・終了値を指定して初期化します。
- iinit: ベクトルの虚部の要素の開始値・増分・終了値を指定して初期化します。
- riinit: ベクトルの実部と虚部の要素の開始値・増分・終了値を指定して初期化します。
- nums: ベクトルの実部の全ての要素を同一の値に初期化します。
- inums: ベクトルの虚部の全ての要素を同一の値に初期化します。
- rinums: ベクトルの実部と虚部の全ての要素を同一の値に初期化します。
- zeros: ベクトルの実部の全ての要素を0に初期化します。
- izeros: ベクトルの虚部の全ての要素を0に初期化します。
- rizeros: ベクトルの実部と虚部の全ての要素を0に初期化します。
- ones: ベクトルの実部の全ての要素を1に初期化します。
- iones: ベクトルの虚部の全ての要素を1に初期化します。
- riones: ベクトルの実部と虚部の全ての要素を1に初期化します。
- 関連項目
-
メモリ
- 目的
- ベクトル型の複素数に関連した処理を行います。
- 書式
-
#include
SVector xsvcplx(SVector xr, SVector xi);
LVector xlvcplx(LVector xr, LVector xi);
FVector xfvcplx(FVector xr, FVector xi);
DVector xdvcplx(DVector xr, DVector xi);
void svreal(SVector x);
void lvreal(LVector x);
void fvreal(FVector x);
void dvreal(DVector x);
void svimag(SVector x);
void lvimag(LVector x);
void fvimag(FVector x);
void dvimag(DVector x);
SVector xsvreal(SVector x);
LVector xlvreal(LVector x);
FVector xfvreal(FVector x);
DVector xdvreal(DVector x);
SVector xsvimag(SVector x);
LVector xlvimag(LVector x);
FVector xfvimag(FVector x);
DVector xdvimag(DVector x);
void svconj(SVector x);
void lvconj(LVector x);
void fvconj(FVector x);
void dvconj(DVector x);
SVector xsvconj(SVector x);
LVector xlvconj(LVector x);
FVector xfvconj(FVector x);
DVector xdvconj(DVector x);
void svriswap(SVector x);
void lvriswap(LVector x);
void fvriswap(FVector x);
void dvriswap(DVector x);
SVector xsvriswap(SVector x);
LVector xlvriswap(LVector x);
FVector xfvriswap(FVector x);
DVector xdvriswap(DVector x);
- 引数
-
- x
- 入力ベクトル
- xr
- 入力実部ベクトル。虚部が存在していても無視されます。
- xi
- 入力虚部ベクトル。実部のデータが入力の虚部として扱われます。虚部が存在していても無視されます。
- 戻り値
- 戻り値がベクトル型の場合は、メモリ確保されたベクトル型が返ります。
- 説明
- 戻り値がベクトル型の場合は、使用しなくなったらメモリの解放をして下さい。
それぞれの関数は、以下のような処理を行います。
- cplx: 実部のデータと虚部のデータから複素スペクトルを作成します。
- real: 虚部のメモリを解放し、実部のみのデータにします。
- imag: 虚部のみのデータにします。元々の虚部は実部にコピーされます。
- conj: 共役複素数を求めます。
- riswap: 実部と虚部のデータを入れ替えます。
- 関連項目
-
メモリ
- 目的
- ベクトル型のコピーやペースト、切り出しなどを行います。
- 書式
-
#include
void svcopy(SVector y, SVector x);
void lvcopy(LVector y, LVector x);
void fvcopy(FVector y, FVector x);
void dvcopy(DVector y, DVector x);
SVector xsvclone(SVector x);
LVector xlvclone(LVector x);
FVector xfvclone(FVector x);
DVector xdvclone(DVector x);
SVector xsvcat(SVector x, SVector y);
LVector xlvcat(LVector x, LVector y);
FVector xfvcat(FVector x, FVector y);
DVector xdvcat(DVector x, DVector y);
SVector xsvcut(SVector x, long offset, long length);
LVector xlvcut(LVector x, long offset, long length);
FVector xfvcut(FVector x, long offset, long length);
DVector xdvcut(DVector x, long offset, long length);
void svpaste(SVector y, SVector x, long y_offset, long x_length, int overlap);
void lvpaste(LVector y, LVector x, long y_offset, long x_length, int overlap);
void fvpaste(FVector y, FVector x, long y_offset, long x_length, int overlap);
void dvpaste(DVector y, DVector x, long y_offset, long x_length, int overlap);
void svadd(SVector y, long y_offset, SVector x, long x_offset, long x_length, int overlap);
void lvadd(LVector y, long y_offset, LVector x, long x_offset, long x_length, int overlap);
void fvadd(FVector y, long y_offset, FVector x, long x_offset, long x_length, int overlap);
void dvadd(DVector y, long y_offset, DVector x, long x_offset, long x_length, int overlap);
LVector xsvtol(SVector x);
FVector xsvtof(SVector x);
DVector xsvtod(SVector x);
SVector xdvtos(DVector x);
LVector xdvtol(DVector x);
FVector xdvtof(DVector x);
void svset(SVector x, short *data, long length);
void lvset(LVector x, long *data, long length);
void fvset(FVector x, float *data, long length);
void dvset(DVector x, double *data, long length);
SVector xsvset(short *data, long length);
LVector xlvset(long *data, long length);
FVector xfvset(float *data, long length);
DVector xdvset(double *data, long length);
SVector xsvsetnew(short *data, long length);
LVector xlvsetnew(long *data, long length);
FVector xfvsetnew(float *data, long length);
DVector xdvsetnew(double *data, long length);
- 引数
-
- x、y
- 入力ベクトル
- offset
- 処理を開始する位置
- length
- 処理を適用する長さ
- x_offset
- 入力ベクトルxにおける、処理を開始する位置
- x_length
- 入力ベクトルxにおける、処理を適用する長さ
- y_offset
- 入力ベクトルyにおける、処理を開始する位置
- overlap
- この値が非零の場合は、加算処理を行う。
- data
- 入力データ(配列もしくはメモリ確保されたポインタ)
- 戻り値
- 戻り値がベクトル型の場合は、メモリ確保されたベクトル型が返ります。
- 説明
- 戻り値がベクトル型の場合は、使用しなくなったらメモリの解放をして下さい。
それぞれの関数は、以下のような処理を行います。
- copy: xのデータをyにコピーします。
- clone: xと同一のベクトルを新たに作成します。
- cat: xのデータの最後にyのデータを
付け加えたものを作成します。
- cut: xのデータの一部分を切り出したものを新たに作成します。
- paste: xのデータをyに貼り付けます。
overlapの値が非零の場合は、yのデータにxのデータを加算します。
- add: xのデータをyに加算します。
overlapの値が零の場合は、yのデータの一部分をxのデータ
で置き換える処理となります。
- to*: 入力ベクトルを別のベクトル型に変換します。
- set: ベクトルにdataで与えられるデータをセットします。
単にポインタをセットするのみで、dataと同一のものをコピーするような処理は行われません。
- 関連項目
-
メモリ
Last modified: "2012-06-09 00:34:07 hideki"