spLib
読み取り中…
検索中…
一致する文字列を見つけられません
<sp/fft.h>: FFT

データ構造

class  spFFTRec
 FFTの実行を制御するクラスです. [詳解]
 

マクロ定義

#define SP_FFT_HIGHEST_PRECISION   SP_HIGHEST_PRECISION
 
#define SP_FFT_HIGH_DOUBLE_PRECISION   SP_HIGH_DOUBLE_PRECISION
 
#define SP_FFT_DOUBLE_PRECISION   SP_DOUBLE_PRECISION
 
#define SP_FFT_LOW_DOUBLE_PRECISION   SP_LOW_DOUBLE_PRECISION
 
#define SP_FFT_HIGH_FLOAT_PRECISION   SP_HIGH_FLOAT_PRECISION
 
#define SP_FFT_FLOAT_PRECISION   SP_FLOAT_PRECISION
 
#define SP_FFT_LOW_FLOAT_PRECISION   SP_LOW_FLOAT_PRECISION
 
#define SP_FFT_32BIT_PRECISION   SP_32BIT_PRECISION
 
#define SP_FFT_24BIT_PRECISION   SP_24BIT_PRECISION
 
#define SP_FFT_16BIT_PRECISION   SP_16BIT_PRECISION
 
#define SP_FFT_IGNORE_PRECISION   SP_IGNORE_PRECISION
 
#define SP_FFT_UNKNOWN_PRECISION   SP_UNKNOWN_PRECISION
 
#define SP_FFT_DEFAULT_PRECISION   SP_FFT_FLOAT_PRECISION
 
#define SP_FFT_SPEED_EXTREMELY_FAST   SP_COMPUTE_SPEED_EXTREMELY_FAST
 
#define SP_FFT_SPEED_VERY_FAST   SP_COMPUTE_SPEED_VERY_FAST
 
#define SP_FFT_SPEED_FASTER   SP_COMPUTE_SPEED_FASTER
 
#define SP_FFT_SPEED_FAST   SP_COMPUTE_SPEED_FAST
 
#define SP_FFT_SPEED_NORMAL   SP_COMPUTE_SPEED_NORMAL
 
#define SP_FFT_SPEED_SLOW   SP_COMPUTE_SPEED_SLOW
 
#define SP_FFT_SPEED_SLOWER   SP_COMPUTE_SPEED_SLOWER
 
#define SP_FFT_SPEED_VERY_SLOW   SP_COMPUTE_SPEED_VERY_SLOW
 
#define SP_FFT_SPEED_EXTREMELY_SLOW   SP_COMPUTE_SPEED_EXTREMELY_SLOW
 
#define SP_FFT_SPEED_UNKNOWN   SP_COMPUTE_SPEED_UNKNOWN
 

型定義

typedef struct _spFFTRec * spFFTRec
 

FFTの実行 (<sp/fft.h>)

int spfftf (float *xRe, float *xIm, long fftl, int inv)
 
int spfft (double *xRe, double *xIm, long fftl, int inv)
 
int sprfftf (float *data, long fftl, int inv)
 
int sprfft (double *data, long fftl, int inv)
 

FFT用データシフト (<sp/fft.h>)

void datashifts (short *data, long length, long shift)
 
void datashiftl (long *data, long length, long shift)
 
void datashiftf (float *data, long length, long shift)
 
void datashift (double *data, long length, long shift)
 
void ridatashifts (short *real, short *imag, long length, long shift)
 
void ridatashiftl (long *real, long *imag, long length, long shift)
 
void ridatashiftf (float *real, float *imag, long length, long shift)
 
void ridatashift (double *real, double *imag, long length, long shift)
 
void circshifts (short *data, long length, long shift)
 
void circshiftl (long *data, long length, long shift)
 
void circshiftf (float *data, long length, long shift)
 
void circshift (double *data, long length, long shift)
 
void ricircshifts (short *real, short *imag, long length, long shift)
 
void ricircshiftl (long *real, long *imag, long length, long shift)
 
void ricircshiftf (float *real, float *imag, long length, long shift)
 
void ricircshift (double *real, double *imag, long length, long shift)
 
void fftturnf (float *xRe, float *xIm, long fftl)
 
void fftturn (double *xRe, double *xIm, long fftl)
 
void fftshiftf (float *xRe, float *xIm, long fftl)
 
void fftshift (double *xRe, double *xIm, long fftl)
 

FFTプラグインによるFFTの実行 (<sp/fft.h>)

int spGetNumFFTPlugin (void)
 
char * xspSearchFFTPluginFile (int *index)
 
spBool spSetDefaultFFTPlugin (const char *name)
 
spBool spIsFFTPlugin (spPlugin *plugin)
 
spPluginspLoadFFTPlugin (const char *name)
 
spBool spFreeFFTPlugin (spPlugin *plugin)
 
spFFTSpeed spGetFFTSpeed (spFFTPrecision precision)
 
spFFTRec spInitBatchedFFTByPlugin (spPlugin *plugin, long order, long batch, spFFTPrecision precision)
 
spFFTRec spInitBatchedFFT (long order, long batch, spFFTPrecision precision)
 
spFFTRec spInitFFTByPlugin (spPlugin *plugin, long order, spFFTPrecision precision)
 
spFFTRec spInitFFT (long order, spFFTPrecision precision)
 
spBool spFreeFFT (spFFTRec fftrec)
 
spBool spResetFFTOrder (spFFTRec fftrec, long order)
 
long spGetFFTOrder (spFFTRec fftrec)
 
long spGetFFTLength (spFFTRec fftrec)
 
long spGetFFTBatch (spFFTRec fftrec)
 
spBool spExecFFTF (spFFTRec fftrec, float *real, float *imag, int inv)
 
spBool spExecFFT (spFFTRec fftrec, double *real, double *imag, int inv)
 
spBool spExecRealFFTF (spFFTRec fftrec, float *data, int inv)
 
spBool spExecRealFFT (spFFTRec fftrec, double *data, int inv)
 
spBool spExecFFTPowerF (spFFTRec fftrec, float *data, float exponent)
 
spBool spExecFFTPower (spFFTRec fftrec, double *data, double exponent)
 

詳解

#include <sp/fft.h>

マクロ定義詳解

◆ SP_FFT_HIGHEST_PRECISION

#define SP_FFT_HIGHEST_PRECISION   SP_HIGHEST_PRECISION

最高精度です.

◆ SP_FFT_HIGH_DOUBLE_PRECISION

#define SP_FFT_HIGH_DOUBLE_PRECISION   SP_HIGH_DOUBLE_PRECISION

通常のdouble型より高精度です.

◆ SP_FFT_DOUBLE_PRECISION

#define SP_FFT_DOUBLE_PRECISION   SP_DOUBLE_PRECISION

double型の精度です.

各種例
lpctest.c.

◆ SP_FFT_LOW_DOUBLE_PRECISION

#define SP_FFT_LOW_DOUBLE_PRECISION   SP_LOW_DOUBLE_PRECISION

通常のdouble型より低精度です.

◆ SP_FFT_HIGH_FLOAT_PRECISION

#define SP_FFT_HIGH_FLOAT_PRECISION   SP_HIGH_FLOAT_PRECISION

通常のfloat型より高精度です.

◆ SP_FFT_FLOAT_PRECISION

#define SP_FFT_FLOAT_PRECISION   SP_FLOAT_PRECISION

float型の精度です.

◆ SP_FFT_LOW_FLOAT_PRECISION

#define SP_FFT_LOW_FLOAT_PRECISION   SP_LOW_FLOAT_PRECISION

通常のfloat型より低精度です.

◆ SP_FFT_32BIT_PRECISION

#define SP_FFT_32BIT_PRECISION   SP_32BIT_PRECISION

32ビット整数の精度です.

◆ SP_FFT_24BIT_PRECISION

#define SP_FFT_24BIT_PRECISION   SP_24BIT_PRECISION

24ビット整数の精度です.

◆ SP_FFT_16BIT_PRECISION

#define SP_FFT_16BIT_PRECISION   SP_16BIT_PRECISION

16ビット整数の精度です.

◆ SP_FFT_IGNORE_PRECISION

#define SP_FFT_IGNORE_PRECISION   SP_IGNORE_PRECISION

精度が無視されることを示します.

◆ SP_FFT_UNKNOWN_PRECISION

#define SP_FFT_UNKNOWN_PRECISION   SP_UNKNOWN_PRECISION

不明な精度です.

◆ SP_FFT_DEFAULT_PRECISION

#define SP_FFT_DEFAULT_PRECISION   SP_FFT_FLOAT_PRECISION

デフォルトの精度です.

各種例
fftvec.c, simple_fft.c, simple_rfft.c.

◆ SP_FFT_SPEED_EXTREMELY_FAST

#define SP_FFT_SPEED_EXTREMELY_FAST   SP_COMPUTE_SPEED_EXTREMELY_FAST

極めて高速です.

◆ SP_FFT_SPEED_VERY_FAST

#define SP_FFT_SPEED_VERY_FAST   SP_COMPUTE_SPEED_VERY_FAST

かなり高速です.

◆ SP_FFT_SPEED_FASTER

#define SP_FFT_SPEED_FASTER   SP_COMPUTE_SPEED_FASTER

より高速です.

◆ SP_FFT_SPEED_FAST

#define SP_FFT_SPEED_FAST   SP_COMPUTE_SPEED_FAST

高速です.

◆ SP_FFT_SPEED_NORMAL

#define SP_FFT_SPEED_NORMAL   SP_COMPUTE_SPEED_NORMAL

通常の速度です.

◆ SP_FFT_SPEED_SLOW

#define SP_FFT_SPEED_SLOW   SP_COMPUTE_SPEED_SLOW

低速です.

◆ SP_FFT_SPEED_SLOWER

#define SP_FFT_SPEED_SLOWER   SP_COMPUTE_SPEED_SLOWER

より低速です.

◆ SP_FFT_SPEED_VERY_SLOW

#define SP_FFT_SPEED_VERY_SLOW   SP_COMPUTE_SPEED_VERY_SLOW

かなり低速です.

◆ SP_FFT_SPEED_EXTREMELY_SLOW

#define SP_FFT_SPEED_EXTREMELY_SLOW   SP_COMPUTE_SPEED_EXTREMELY_SLOW

極めて低速です.

◆ SP_FFT_SPEED_UNKNOWN

#define SP_FFT_SPEED_UNKNOWN   SP_COMPUTE_SPEED_UNKNOWN

不明な速度です.

型定義詳解

◆ spFFTRec

typedef struct _spFFTRec* spFFTRec

spFFTRec の定義です.

関数詳解

◆ spfftf()

int spfftf ( float * xRe,
float * xIm,
long fftl,
int inv )
extern

入力データに対してFFTを実行します.

引数
[in]xRe実部のデータを指定します.配列,あるいはメモリ確保されたポインタを指定します. 領域の大きさは,fftl 以上である必要があります.
[in]xIm虚部のデータを指定します.配列,あるいはメモリ確保されたポインタを指定します. 領域の大きさは,fftl 以上である必要があります.
[in]fftlFFTポイント数を指定します.
[in]inv非0の場合には逆FFTを実行し,0の場合にはFFTを実行します.
戻り値
SP_SUCCESS成功
SP_FAILURE失敗

◆ spfft()

int spfft ( double * xRe,
double * xIm,
long fftl,
int inv )
extern

入力データに対してFFTを実行します.

引数
[in]xRe実部のデータを指定します.配列,あるいはメモリ確保されたポインタを指定します. 領域の大きさは,fftl 以上である必要があります.
[in]xIm虚部のデータを指定します.配列,あるいはメモリ確保されたポインタを指定します. 領域の大きさは,fftl 以上である必要があります.
[in]fftlFFTポイント数を指定します.
[in]inv非0の場合には逆FFTを実行し,0の場合にはFFTを実行します.
戻り値
SP_SUCCESS成功
SP_FAILURE失敗
各種例
simple_fft.c.

◆ sprfftf()

int sprfftf ( float * data,
long fftl,
int inv )
extern

入力実数データに対してFFTを実行します.

引数
[in]dataフーリエ変換を行うデータを指定します. 領域の大きさは,fftl 以上である必要があります. 周波数領域では, data には,次のように複素スペクトルの値が入っています. data[0]=Re(X[0]), data[1]=Re(X[fftl/2]), data[2*n]=Re(X[n]), data[2*n+1]=Im(X[n]). ここで,X[n]は複素スペクトルを表します. すなわち,0を除く偶数番目の要素にはスペクトルの実部の値が,1を除く奇数番目の要素にはスペクトルの虚部の値が入っており,0番目の要素には周波数0におけるスペクトルの値(実部)が,1番目の要素にはナイキスト周波数におけるスペクトルの値(実部)が入っています.
[in]fftlFFTポイント数を指定します.
[in]inv非0の場合には逆FFTを実行し,0の場合にはFFTを実行します.
戻り値
SP_SUCCESS成功
SP_FAILURE失敗

◆ sprfft()

int sprfft ( double * data,
long fftl,
int inv )
extern

入力実数データに対してFFTを実行します.

引数
[in]dataフーリエ変換を行うデータを指定します. 領域の大きさは,fftl 以上である必要があります. 周波数領域では, data には,次のように複素スペクトルの値が入っています. data[0]=Re(X[0]), data[1]=Re(X[fftl/2]), data[2*n]=Re(X[n]), data[2*n+1]=Im(X[n]). ここで,X[n]は複素スペクトルを表します. すなわち,0を除く偶数番目の要素にはスペクトルの実部の値が,1を除く奇数番目の要素にはスペクトルの虚部の値が入っており,0番目の要素には周波数0におけるスペクトルの値(実部)が,1番目の要素にはナイキスト周波数におけるスペクトルの値(実部)が入っています.
[in]fftlFFTポイント数を指定します.
[in]inv非0の場合には逆FFTを実行し,0の場合にはFFTを実行します.
戻り値
SP_SUCCESS成功
SP_FAILURE失敗
各種例
simple_rfft.c.

◆ datashifts()

void datashifts ( short * data,
long length,
long shift )
extern

入力データのシフトを実行します.シフトしてバッファの範囲外にはみ出た部分は捨てられます.

引数
[in]data実行の対象となるデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ datashiftl()

void datashiftl ( long * data,
long length,
long shift )
extern

入力データのシフトを実行します.シフトしてバッファの範囲外にはみ出た部分は捨てられます.

引数
[in]data実行の対象となるデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ datashiftf()

void datashiftf ( float * data,
long length,
long shift )
extern

入力データのシフトを実行します.シフトしてバッファの範囲外にはみ出た部分は捨てられます.

引数
[in]data実行の対象となるデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ datashift()

void datashift ( double * data,
long length,
long shift )
extern

入力データのシフトを実行します.シフトしてバッファの範囲外にはみ出た部分は捨てられます.

引数
[in]data実行の対象となるデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ ridatashifts()

void ridatashifts ( short * real,
short * imag,
long length,
long shift )
extern

入力複素数データのシフトを実行します.シフトしてバッファの範囲外にはみ出た部分は捨てられます.

引数
[in]real実行の対象となる実部のデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]imag実行の対象となる虚部のデータが含まれるバッファを指定します.実行後に値が上書きされます.使用しない場合は,NULLとすることができます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ ridatashiftl()

void ridatashiftl ( long * real,
long * imag,
long length,
long shift )
extern

入力複素数データのシフトを実行します.シフトしてバッファの範囲外にはみ出た部分は捨てられます.

引数
[in]real実行の対象となる実部のデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]imag実行の対象となる虚部のデータが含まれるバッファを指定します.実行後に値が上書きされます.使用しない場合は,NULLとすることができます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ ridatashiftf()

void ridatashiftf ( float * real,
float * imag,
long length,
long shift )
extern

入力複素数データのシフトを実行します.シフトしてバッファの範囲外にはみ出た部分は捨てられます.

引数
[in]real実行の対象となる実部のデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]imag実行の対象となる虚部のデータが含まれるバッファを指定します.実行後に値が上書きされます.使用しない場合は,NULLとすることができます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ ridatashift()

void ridatashift ( double * real,
double * imag,
long length,
long shift )
extern

入力複素数データのシフトを実行します.シフトしてバッファの範囲外にはみ出た部分は捨てられます.

引数
[in]real実行の対象となる実部のデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]imag実行の対象となる虚部のデータが含まれるバッファを指定します.実行後に値が上書きされます.使用しない場合は,NULLとすることができます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ circshifts()

void circshifts ( short * data,
long length,
long shift )
extern

入力データの環状シフトを実行します.

引数
[in]data実行の対象となるデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ circshiftl()

void circshiftl ( long * data,
long length,
long shift )
extern

入力データの環状シフトを実行します.

引数
[in]data実行の対象となるデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ circshiftf()

void circshiftf ( float * data,
long length,
long shift )
extern

入力データの環状シフトを実行します.

引数
[in]data実行の対象となるデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ circshift()

void circshift ( double * data,
long length,
long shift )
extern

入力データの環状シフトを実行します.

引数
[in]data実行の対象となるデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ ricircshifts()

void ricircshifts ( short * real,
short * imag,
long length,
long shift )
extern

入力複素数データの環状シフトを実行します.

引数
[in]real実行の対象となる実部のデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]imag実行の対象となる虚部のデータが含まれるバッファを指定します.実行後に値が上書きされます.使用しない場合は,NULLとすることができます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ ricircshiftl()

void ricircshiftl ( long * real,
long * imag,
long length,
long shift )
extern

入力複素数データの環状シフトを実行します.

引数
[in]real実行の対象となる実部のデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]imag実行の対象となる虚部のデータが含まれるバッファを指定します.実行後に値が上書きされます.使用しない場合は,NULLとすることができます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ ricircshiftf()

void ricircshiftf ( float * real,
float * imag,
long length,
long shift )
extern

入力複素数データの環状シフトを実行します.

引数
[in]real実行の対象となる実部のデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]imag実行の対象となる虚部のデータが含まれるバッファを指定します.実行後に値が上書きされます.使用しない場合は,NULLとすることができます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ ricircshift()

void ricircshift ( double * real,
double * imag,
long length,
long shift )
extern

入力複素数データの環状シフトを実行します.

引数
[in]real実行の対象となる実部のデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]imag実行の対象となる虚部のデータが含まれるバッファを指定します.実行後に値が上書きされます.使用しない場合は,NULLとすることができます.
[in]lengthバッファの長さを指定します.
[in]shiftデータシフト長です.正の値を指定すると右側に,負の値を指定すると左側にシフトします.

◆ fftturnf()

void fftturnf ( float * xRe,
float * xIm,
long fftl )
extern

バッファにおけるインデックスfftl/2を基準にして,スペクトルの実部に対しては線対称になるようにし,スペクトルの虚部については,点対称になるようにします.入力スペクトルの後半部分に含まれているデータは使用されません.

引数
[in]xRe実行の対象となる実部のデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]xIm実行の対象となる虚部のデータが含まれるバッファを指定します.実行後に値が上書きされます.使用しない場合は,NULLとすることができます.
[in]fftlFFTポイントを指定します.バッファはこの長さ以上である必要があります.

◆ fftturn()

void fftturn ( double * xRe,
double * xIm,
long fftl )
extern

バッファにおけるインデックスfftl/2を基準にして,スペクトルの実部に対しては線対称になるようにし,スペクトルの虚部については,点対称になるようにします.入力スペクトルの後半部分に含まれているデータは使用されません.

引数
[in]xRe実行の対象となる実部のデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]xIm実行の対象となる虚部のデータが含まれるバッファを指定します.実行後に値が上書きされます.使用しない場合は,NULLとすることができます.
[in]fftlFFTポイントを指定します.バッファはこの長さ以上である必要があります.

◆ fftshiftf()

void fftshiftf ( float * xRe,
float * xIm,
long fftl )
extern

バッファにおけるインデックスfftl/2がインデックス0になるように環状シフトします.

引数
[in]xRe実行の対象となる実部のデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]xIm実行の対象となる虚部のデータが含まれるバッファを指定します.実行後に値が上書きされます.使用しない場合は,NULLとすることができます.
[in]fftlFFTポイントを指定します.バッファはこの長さ以上である必要があります.

◆ fftshift()

void fftshift ( double * xRe,
double * xIm,
long fftl )
extern

バッファにおけるインデックスfftl/2がインデックス0になるように環状シフトします.

引数
[in]xRe実行の対象となる実部のデータが含まれるバッファを指定します.実行後に値が上書きされます.
[in]xIm実行の対象となる虚部のデータが含まれるバッファを指定します.実行後に値が上書きされます.使用しない場合は,NULLとすることができます.
[in]fftlFFTポイントを指定します.バッファはこの長さ以上である必要があります.

◆ spGetNumFFTPlugin()

int spGetNumFFTPlugin ( void )
extern

使用可能なFFTプラグインの数を取得します.

戻り値
使用可能なFFTプラグインの数が返ります.

◆ xspSearchFFTPluginFile()

char * xspSearchFFTPluginFile ( int * index)
extern

登録されているFFTプラグイン名を調べます.

引数
[in]index調査を開始するプラグインインデックスを値に持つ変数のアドレスを指定します.最初の呼び出しの際はインデックスを0にして呼び出します.関数終了後は,インデックスの値が新たに取得したFFTプラグインのインデックスの値に更新されます.なお,このインデックスは連続した値でない可能性があります.
戻り値
FFTプラグイン名のメモリ確保されたヌル終端文字列が返ります.必要がなくなったら xspFree() によりメモリの解放をして下さい. エラーが発生するか,もうプラグインが存在しない場合にはNULLが返ります.

◆ spSetDefaultFFTPlugin()

spBool spSetDefaultFFTPlugin ( const char * name)
extern

指定したFFTプラグインをデフォルトのFFTエンジンに設定します.

引数
[in]nameデフォルトのFFTエンジンに設定したいFFTプラグイン名をヌル終端文字列で指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spIsFFTPlugin()

spBool spIsFFTPlugin ( spPlugin * plugin)
extern

プラグインがFFTプラグインであるかをチェックします.

引数
[in]plugin対象のプラグインを指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spLoadFFTPlugin()

spPlugin * spLoadFFTPlugin ( const char * name)
extern

FFTプラグインをロードして使用できるように初期化します.

引数
[in]nameFFTプラグイン名をヌル終端文字列で指定します.
戻り値
ロードされたプラグインが返ります.失敗した場合にはNULLが返ります.
参照
spFreeFFTPlugin()
各種例
simple_fft.c, simple_rfft.c.

◆ spFreeFFTPlugin()

spBool spFreeFFTPlugin ( spPlugin * plugin)
extern

spLoadFFTPlugin() で得られたFFTプラグインをアンロードして解放します.

引数
[in]pluginspLoadFFTPlugin() の呼び出しで得られた plugin を指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗
参照
spLoadFFTPlugin()

◆ spGetFFTSpeed()

spFFTSpeed spGetFFTSpeed ( spFFTPrecision precision)
extern

デフォルトのFFTエンジンの速度を調べます.FFTプラグインがデフォルトになっていたとしても,プラグインのものは調べません.

引数
[in]precisionどの精度の場合の速度を調べるかを spFFTPrecision 型で指定します.
戻り値
速度が spFFTSpeed 型で得られます.

◆ spInitBatchedFFTByPlugin()

spFFTRec spInitBatchedFFTByPlugin ( spPlugin * plugin,
long order,
long batch,
spFFTPrecision precision )
extern

FFTプラグインを用い,FFTを行う際に使われるリソースを戻り値の spFFTRec 内に確保して初期化します. FFT関連の関数である spExecFFT()spExecRealFFT() などが,この関数の戻り値を用いて使用できるようになります. spInitFFTByPlugin() との違いは,batch の数だけFFTが一括処理される点です. spExecFFT()spExecRealFFT() などに渡すバッファは batch の数だけFFTポイントのベクトルが並んでいるものだと考える必要があります.

引数
[in]pluginFFTを実行するエンジンとなるFFTプラグインを指定します.
[in]orderFFTポイントが2の何乗であるかを指定します.例えば,256であれば,8を指定します.
[in]batchFFTの一括処理数を指定します.
[in]precisionFFTの内部計算における精度を指定します. SP_FFT_DEFAULT_PRECISIONSP_FFT_DOUBLE_PRECISIONSP_FFT_FLOAT_PRECISION などが指定できます. 特に精度を重視しない場合は, SP_FFT_DEFAULT_PRECISION を指定して下さい. 精度を高くする場合,環境によっては速度が遅くなる場合があります.
戻り値
成功すると,確保されたリソースを含む spFFTRec が返ります. 失敗するとNULLが返ります.リソースを解放するには, spFreeFFT() を呼びます.

◆ spInitBatchedFFT()

spFFTRec spInitBatchedFFT ( long order,
long batch,
spFFTPrecision precision )
extern

デフォルトのFFTエンジンを用い,FFTを行う際に使われるリソースを戻り値の spFFTRec 内に確保して初期化します. FFT関連の関数である spExecFFT()spExecRealFFT() などが,この関数の戻り値を用いて使用できるようになります. spInitFFT() との違いは,batch の数だけFFTが一括処理される点です. spExecFFT()spExecRealFFT() などに渡すバッファは batch の数だけFFTポイントのベクトルが並んでいるものだと考える必要があります.

引数
[in]orderFFTポイントが2の何乗であるかを指定します.例えば,256であれば,8を指定します.
[in]batchFFTの一括処理数を指定します.
[in]precisionFFTの内部計算における精度を指定します. SP_FFT_DEFAULT_PRECISIONSP_FFT_DOUBLE_PRECISIONSP_FFT_FLOAT_PRECISION などが指定できます. 特に精度を重視しない場合は, SP_FFT_DEFAULT_PRECISION を指定して下さい. 精度を高くする場合,環境によっては速度が遅くなる場合があります.
戻り値
成功すると,確保されたリソースを含む spFFTRec が返ります. 失敗するとNULLが返ります.リソースを解放するには, spFreeFFT() を呼びます.

◆ spInitFFTByPlugin()

spFFTRec spInitFFTByPlugin ( spPlugin * plugin,
long order,
spFFTPrecision precision )
extern

FFTプラグインを用い,FFTを行う際に使われるリソースを戻り値の spFFTRec 内に確保して初期化します. FFT関連の関数である spExecFFT()spExecRealFFT() などが,この関数の戻り値を用いて使用できるようになります.

引数
[in]pluginFFTを実行するエンジンとなるFFTプラグインを指定します.
[in]orderFFTポイントが2の何乗であるかを指定します.例えば,256であれば,8を指定します.
[in]precisionFFTの内部計算における精度を指定します. SP_FFT_DEFAULT_PRECISIONSP_FFT_DOUBLE_PRECISIONSP_FFT_FLOAT_PRECISION などが指定できます. 特に精度を重視しない場合は, SP_FFT_DEFAULT_PRECISION を指定して下さい. 精度を高くする場合,環境によっては速度が遅くなる場合があります.
戻り値
成功すると,確保されたリソースを含む spFFTRec が返ります. 失敗するとNULLが返ります.リソースを解放するには, spFreeFFT() を呼びます.
各種例
simple_fft.c, simple_rfft.c.

◆ spInitFFT()

spFFTRec spInitFFT ( long order,
spFFTPrecision precision )
extern

デフォルトのFFTエンジンを用い,FFTを行う際に使われるリソースを戻り値の spFFTRec 内に確保して初期化します. FFT関連の関数である spExecFFT()spExecRealFFT() などが,この関数の戻り値を用いて使用できるようになります.

引数
[in]orderFFTポイントが2の何乗であるかを指定します.例えば,256であれば,8を指定します.
[in]precisionFFTの内部計算における精度を指定します. SP_FFT_DEFAULT_PRECISIONSP_FFT_DOUBLE_PRECISIONSP_FFT_FLOAT_PRECISION などが指定できます. 特に精度を重視しない場合は, SP_FFT_DEFAULT_PRECISION を指定して下さい. 精度を高くする場合,環境によっては速度が遅くなる場合があります.
戻り値
成功すると,確保されたリソースを含む spFFTRec が返ります. 失敗するとNULLが返ります.リソースを解放するには, spFreeFFT() を呼びます.
各種例
fftvec.c, lpctest.c.

◆ spFreeFFT()

spBool spFreeFFT ( spFFTRec fftrec)
extern

FFTを行う際に使われる spFFTRec のリソースを解放します.

引数
[in]fftrecspInitFFT() 等の呼び出しで得られた fftrec を指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗
各種例
fftvec.c, lpctest.c, simple_fft.c, simple_rfft.c.

◆ spResetFFTOrder()

spBool spResetFFTOrder ( spFFTRec fftrec,
long order )
extern

FFTを実行する際のFFTポイントを変更します. FFT実行の際( spExecFFT()spExecRealFFT() )のデータの領域の大きさは,2のorder 乗である必要があります.

引数
[in]fftrecspInitFFT() 等の呼び出しで得られた fftrec を指定します.
[in]orderFFTポイントの次数(2の何乗であるか)を指定します.例えば,256であれば,8を指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spGetFFTOrder()

long spGetFFTOrder ( spFFTRec fftrec)
extern

現在のFFTポイントの次数(2の何乗であるか)を取得します.

引数
[in]fftrecspInitFFT() 等の呼び出しで得られた fftrec を指定します.
戻り値
FFTポイントの次数が返ります.

◆ spGetFFTLength()

long spGetFFTLength ( spFFTRec fftrec)
extern

現在のFFTポイントの値を取得します.

引数
[in]fftrecspInitFFT() 等の呼び出しで得られた fftrec を指定します.
戻り値
FFTポイントの値が返ります.
各種例
fftvec.c, lpctest.c, simple_fft.c, simple_rfft.c.

◆ spGetFFTBatch()

long spGetFFTBatch ( spFFTRec fftrec)
extern

現在のFFTの一括処理数を取得します.

引数
[in]fftrecspInitFFT() 等の呼び出しで得られた fftrec を指定します.
戻り値
FFTの一括処理数が返ります.

◆ spExecFFTF()

spBool spExecFFTF ( spFFTRec fftrec,
float * real,
float * imag,
int inv )
extern

FFTプラグインを用いてFFTを実行します. float型のデータの場合は spExecFFTF() を,double型のデータの場合は spExecFFT() を呼び出します. どちらの関数を呼び出しても,内部処理においては spInitFFT() の呼び出し時に指定したprecisionに対応する精度で計算します.

引数
[in]fftrecspInitFFT() 等の呼び出しで得られた fftrec を指定します.
[in]real実部のデータを指定します.配列,あるいはメモリ確保されたポインタを指定します. 領域の大きさは,2のorderspInitFFT() の呼び出し時に指定したもの)乗である必要があります.
[in]imag虚部のデータを指定します.配列,あるいはメモリ確保されたポインタを指定します. 領域の大きさは,2のorderspInitFFT() の呼び出し時に指定したもの)乗である必要があります. 入力が複素数ではなく,実数の場合は,imag の全てのデータを0.0にしたものを指定します.
[in]inv非0の場合には逆FFTを実行し,0の場合にはFFTを実行します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spExecFFT()

spBool spExecFFT ( spFFTRec fftrec,
double * real,
double * imag,
int inv )
extern

FFTプラグインを用いてFFTを実行します. float型のデータの場合は spExecFFTF() を,double型のデータの場合は spExecFFT() を呼び出します. どちらの関数を呼び出しても,内部処理においては spInitFFT() の呼び出し時に指定したprecisionに対応する精度で計算します.

引数
[in]fftrecspInitFFT() 等の呼び出しで得られた fftrec を指定します.
[in]real実部のデータを指定します.配列,あるいはメモリ確保されたポインタを指定します. 領域の大きさは,2のorderspInitFFT() の呼び出し時に指定したもの)乗である必要があります.
[in]imag虚部のデータを指定します.配列,あるいはメモリ確保されたポインタを指定します. 領域の大きさは,2のorderspInitFFT() の呼び出し時に指定したもの)乗である必要があります. 入力が複素数ではなく,実数の場合は,imag の全てのデータを0.0にしたものを指定します.
[in]inv非0の場合には逆FFTを実行し,0の場合にはFFTを実行します.
戻り値
SP_TRUE成功
SP_FALSE失敗
各種例
simple_fft.c.

◆ spExecRealFFTF()

spBool spExecRealFFTF ( spFFTRec fftrec,
float * data,
int inv )
extern

実数データに対するFFTを実行します. float型のデータの場合は spExecRealFFTF() を,double型のデータの場合は spExecRealFFT() を呼び出します. どちらの関数を呼び出しても,内部処理においては spInitFFT() の呼び出し時に指定したprecisionに対応する精度で計算します.

引数
[in]fftrecspInitFFT() 等の呼び出しで得られた fftrec を指定します.
[in]dataフーリエ変換を行うデータを指定します. 領域の大きさは,2のorderspInitFFT() 等の呼び出し時に指定したもの)乗である必要があります. 周波数領域では, data には,次のように複素スペクトルの値が入っています. data[0]=Re(X[0]), data[1]=Re(X[fftl/2]), data[2*n]=Re(X[n]), data[2*n+1]=Im(X[n]). ここで,X[n]は複素スペクトルを,fftlはFFTポイントを表します. すなわち,0を除く偶数番目の要素にはスペクトルの実部の値が,1を除く奇数番目の要素にはスペクトルの虚部の値が入っており,0番目の要素には周波数0におけるスペクトルの値(実部)が,1番目の要素にはナイキスト周波数におけるスペクトルの値(実部)が入っています.
[in]inv非0の場合には逆FFTを実行し,0の場合にはFFTを実行します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spExecRealFFT()

spBool spExecRealFFT ( spFFTRec fftrec,
double * data,
int inv )
extern

実数データに対するFFTを実行します. float型のデータの場合は spExecRealFFTF() を,double型のデータの場合は spExecRealFFT() を呼び出します. どちらの関数を呼び出しても,内部処理においては spInitFFT() の呼び出し時に指定したprecisionに対応する精度で計算します.

引数
[in]fftrecspInitFFT() 等の呼び出しで得られた fftrec を指定します.
[in]dataフーリエ変換を行うデータを指定します. 領域の大きさは,2のorderspInitFFT() 等の呼び出し時に指定したもの)乗である必要があります. 周波数領域では, data には,次のように複素スペクトルの値が入っています. data[0]=Re(X[0]), data[1]=Re(X[fftl/2]), data[2*n]=Re(X[n]), data[2*n+1]=Im(X[n]). ここで,X[n]は複素スペクトルを,fftlはFFTポイントを表します. すなわち,0を除く偶数番目の要素にはスペクトルの実部の値が,1を除く奇数番目の要素にはスペクトルの虚部の値が入っており,0番目の要素には周波数0におけるスペクトルの値(実部)が,1番目の要素にはナイキスト周波数におけるスペクトルの値(実部)が入っています.
[in]inv非0の場合には逆FFTを実行し,0の場合にはFFTを実行します.
戻り値
SP_TRUE成功
SP_FALSE失敗
各種例
simple_rfft.c.

◆ spExecFFTPowerF()

spBool spExecFFTPowerF ( spFFTRec fftrec,
float * data,
float exponent )
extern

FFTによってパワースペクトルを算出します.

引数
[in]fftrecspInitFFT() 等の呼び出しで得られた fftrec を指定します.
[in]dataフーリエ変換を行うデータを指定します. 領域の大きさは,2のorderspInitFFT() 等の呼び出し時に指定したもの)乗である必要があります. 実行後は,計算結果で上書きされます.
[in]exponentパワースペクトル算出後にパワースペクトルを何乗するかを指定します. 1であればパワースペクトルそのもの,0.5であれば振幅スペクトルが得られます.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spExecFFTPower()

spBool spExecFFTPower ( spFFTRec fftrec,
double * data,
double exponent )
extern

FFTによってパワースペクトルを算出します.

引数
[in]fftrecspInitFFT() 等の呼び出しで得られた fftrec を指定します.
[in]dataフーリエ変換を行うデータを指定します. 領域の大きさは,2のorderspInitFFT() 等の呼び出し時に指定したもの)乗である必要があります. 実行後は,計算結果で上書きされます.
[in]exponentパワースペクトル算出後にパワースペクトルを何乗するかを指定します. 1であればパワースペクトルそのもの,0.5であれば振幅スペクトルが得られます.
戻り値
SP_TRUE成功
SP_FALSE失敗