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

データ構造

class  spSVector
 short型を扱うためのベクトル型です. [詳解]
 
class  spLVector
 long型を扱うためのベクトル型です. [詳解]
 
class  spFVector
 float型を扱うためのベクトル型です. [詳解]
 
class  spDVector
 double型を扱うためのベクトル型です. [詳解]
 

マクロ定義

#define SP_LOW_FLOAT_PRECISION   SP_32BIT_PRECISION
 

列挙型

enum  spPrecision {
  SP_HIGHEST_PRECISION = 128 , SP_HIGH_DOUBLE_PRECISION = 72 , SP_DOUBLE_PRECISION = 64 , SP_LOW_DOUBLE_PRECISION = 48 ,
  SP_HIGH_FLOAT_PRECISION = 34 , SP_FLOAT_PRECISION = 33 , SP_32BIT_PRECISION = 32 , SP_24BIT_PRECISION = 24 ,
  SP_16BIT_PRECISION = 16 , SP_8BIT_PRECISION = 8 , SP_IGNORE_PRECISION = 0 , SP_UNKNOWN_PRECISION = 255
}
 
enum  spComputeSpeed {
  SP_COMPUTE_SPEED_EXTREMELY_FAST = 35 , SP_COMPUTE_SPEED_VERY_FAST = 30 , SP_COMPUTE_SPEED_FASTER = 25 , SP_COMPUTE_SPEED_FAST = 20 ,
  SP_COMPUTE_SPEED_NORMAL = 10 , SP_COMPUTE_SPEED_SLOW = 5 , SP_COMPUTE_SPEED_SLOWER = 4 , SP_COMPUTE_SPEED_VERY_SLOW = 3 ,
  SP_COMPUTE_SPEED_EXTREMELY_SLOW = 2 , SP_COMPUTE_SPEED_UNKNOWN = -1
}
 

詳解

#include <sp/vector.h>

はじめに

ベクトル型は,様々な信号処理関数の引数や戻り値として用いられる型です. short型を扱うための spSVector 型,long型を扱うための spLVector 型,float型を扱うための spFVector 型,double型を扱うための spDVector 型が用意されています.

spSVector 型では xsv, spLVector 型では xlv, spFVector 型では xfv, spDVector 型では xdvで始まる関数でメモリ確保されます. メモリ確保されたベクトルは,使用しなくなったらそれぞれ xsvfree() , xlvfree() , xfvfree() , xdvfree() で解放する必要があります.

ロック状態とアンロック状態

ベクトルの内部状態として,ロック状態とアンロック状態があります(バージョン0.9から導入).

デフォルトはロック状態で,アンロック状態にする関数( svunlock() , lvunlock() , fvunlock() , dvunlock() )を呼び出すことにより、その後の一部の処理が高速になることがあります. ただし,アンロック状態ではベクトルのデータへのアクセスが禁止されていますので, ->data->imag などのベクトル内の配列にアクセスする前に,ロック状態にする関数( svlock() , lvlock() , fvlock() , dvlock() )を呼び出します.

一部環境におけるアンロック状態では,内部処理専用となる内部データのみに正しいデータがあることが保証されており,このデータに対して直接処理することで高速な実行が実現されています. そのため,高速処理が行われる関数を呼び出す前にベクトルをアンロックする必要があります. ただし,ロック・アンロック処理は,一部環境ではオーバーヘッドが大きいため,何度もロック・アンロック処理を行うと,高速化による恩恵がほとんど受けられなくなることがあります. このようなケースでは,アンロック状態にした後に,高速処理が行われる関数を可能な限り続けて呼び出し,最後にロック状態にするというような実装にして下さい.

マクロ定義詳解

◆ SP_LOW_FLOAT_PRECISION

#define SP_LOW_FLOAT_PRECISION   SP_32BIT_PRECISION

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

列挙型詳解

◆ spPrecision

計算精度を表す列挙型です.

列挙値
SP_HIGHEST_PRECISION 

最高精度です.

SP_HIGH_DOUBLE_PRECISION 

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

SP_DOUBLE_PRECISION 

double型の精度です.

SP_LOW_DOUBLE_PRECISION 

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

SP_HIGH_FLOAT_PRECISION 

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

SP_FLOAT_PRECISION 

float型の精度です.

SP_32BIT_PRECISION 

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

SP_24BIT_PRECISION 

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

SP_16BIT_PRECISION 

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

SP_8BIT_PRECISION 

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

SP_IGNORE_PRECISION 

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

SP_UNKNOWN_PRECISION 

不明な精度です.

◆ spComputeSpeed

計算速度を表す列挙型です.

列挙値
SP_COMPUTE_SPEED_EXTREMELY_FAST 

極めて高速です.

SP_COMPUTE_SPEED_VERY_FAST 

かなり高速です.

SP_COMPUTE_SPEED_FASTER 

より高速です.

SP_COMPUTE_SPEED_FAST 

高速です.

SP_COMPUTE_SPEED_NORMAL 

通常の速度です.

SP_COMPUTE_SPEED_SLOW 

低速です.

SP_COMPUTE_SPEED_SLOWER 

より低速です.

SP_COMPUTE_SPEED_VERY_SLOW 

かなり低速です.

SP_COMPUTE_SPEED_EXTREMELY_SLOW 

極めて低速です.

SP_COMPUTE_SPEED_UNKNOWN 

不明な速度です.