ベクトル

ベクトル型を扱う関数は、原則として、どのベクトル型であるかに応じて関数名が決められています。 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 <sp/vector.h> 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);

引数
xvector
入力ベクトル
length
ベクトルの長さ

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

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

関連項目
ベクトル初期化

ベクトル初期化

目的
ベクトル型の初期化を行います。

書式
#include <sp/vector.h> 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
初期化する際のベクトルの要素の値

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

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

関連項目
メモリ

複素数

目的
ベクトル型の複素数に関連した処理を行います。

書式
#include <sp/vector.h> 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
入力虚部ベクトル。実部のデータが入力の虚部として扱われます。虚部が存在していても無視されます。

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

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

関連項目
メモリ

ベクトルのコピーなど

目的
ベクトル型のコピーやペースト、切り出しなどを行います。

書式
#include <sp/vector.h> 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);

引数
xy
入力ベクトル
offset
処理を開始する位置
length
処理を適用する長さ
x_offset
入力ベクトルxにおける、処理を開始する位置
x_length
入力ベクトルxにおける、処理を適用する長さ
y_offset
入力ベクトルyにおける、処理を開始する位置
overlap
この値が非零の場合は、加算処理を行う。
data
入力データ(配列もしくはメモリ確保されたポインタ)

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

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

関連項目
メモリ

Last modified: "2012-06-09 00:34:07 hideki"