フィルタ

フィルタリング

目的
フィルタリングを行います。
書式
#include <sp/filter.h> extern DVector xdvfftfiltex(spFFTRec fftrec, DVector b, DVector x); extern DVector xdvfftfiltmex(spFFTRec fftrec, DVector b, DVector x); extern DVector xdvfftfilt(DVector b, DVector x, long fftp); extern DVector xdvfftfiltm(DVector b, DVector x, long fftp); extern DVector xdvconv(DVector b, DVector x); extern DVector xdvfilter(DVector b, DVector a, DVector x); extern DVector xdvfiltfilt(DVector b, DVector a, DVector x);
引数
b
FIRフィルタ部の係数ベクトル
a
IIRフィルタ部の係数ベクトル
x
入力信号ベクトル
fftp
FFTポイント数
fftrec
spInitFFT等の呼び出しで得られた spFFTRec型。 これを引数に持つ関数は、exの接尾辞を持っている。
戻り値
フィルタ処理の結果がベクトル型で返ります。
説明
戻り値のベクトル型は、使用しなくなったらメモリの解放をして下さい。 fftrecを引数に持つ関数は、内部で高速なFFTの実装を使用するため、処理が劇的に速くなることがあります。 それぞれの関数は、以下のような処理を行います。
関連項目
ベクトル型ベクトル型のメモリspFFTRec型

FIRフィルタ作成

目的
カイザー窓を用いたFIRフィルタの作成を行います。
書式
#include <sp/filter.h> extern DVector xdvlowpass(double cutoff, double sidelobe, double trans, double gain); extern DVector xdvhighpass(double cutoff, double sidelobe, double trans, double gain); extern DVector xdvbandpass(double hp_cutoff, double lp_cutoff, double sidelobe, double trans, double gain); extern DVector xdvbandstop(double lp_cutoff, double hp_cutoff, double sidelobe, double trans, double gain);
引数
cutoffhp_cutofflp_cutoff
ナイキスト周波数(サンプリング周波数の半分)を1としたときの正規化カットオフ周波数。 hp_cutofflp_cutoffはそれぞれハイパス・ローパスフィルタの正規化カットオフ周波数。
sidelobe
デシベル単位のサイドローブの高さ
trans
許容誤差。 0に近いほど許容誤差が小さくなり、その結果としてフィルタ次数が高くなることがある。
gain
ゲイン。1.0であればゲイン調整を行わない。
戻り値
FIRフィルタの係数がベクトル型で返ります。
説明
戻り値のベクトル型は、使用しなくなったらメモリの解放をして下さい。 xdvlowpassxdvhighpassxdvbandpassxdvbandstop は、それぞれローパス、ハイパス、バンドパス、バンドストップフィルタを作成します。
関連項目
フィルタリングベクトル型ベクトル型のメモリ

フィルタ関連関数

目的
フィルタ処理に関連した関数です。
書式
#include <sp/filter.h> extern void dvangle(DVector spc); extern DVector xdvangle(DVector spc); extern void dvunwrap(DVector phs, double cutoff); extern double sinc(double x); extern double sincc(double x, double c);
引数
spc
入力複素数ベクトル。例えば複素スペクトルなど。
戻り値
戻り値がベクトル型の場合は、メモリ確保されたベクトル型が返ります。
説明
戻り値のベクトル型は、使用しなくなったらメモリの解放をして下さい。 それぞれの関数は、以下のような処理を行います。
関連項目
ベクトル型ベクトル型のメモリ

補間など

目的
補間などを実行します。
書式
#include <sp/filter.h> extern DVector xdvinterp1l(DVector x, DVector y, DVector xi); extern DVector xdvinterp1s(DVector x, DVector y, DVector xi); extern DVector xdvsplinecl(DVector x, DVector y, DVector xi, double leftslope, double rightslope); extern DVector xdvspline(DVector x, DVector y, DVector xi, spBool notaknot); extern DVector xdvinterpex(DVector sig, long r, long l, double a); extern DVector xdvinterp(DVector sig, long r); /* l = 4, a = 0.5 */ extern DVector xdvdecimateex(DVector sig, long r, long order, spBool fir_flag); extern DVector xdvdecimate(DVector sig, long r);
引数
x
補間元の入力信号yのX軸の値
y
補間元の入力信号
xi
補間後の信号のX軸の値
leftsloperightslope
xdvsplineclによる補間の端点の勾配。それぞれ左端の勾配と右端の勾配を表す。
notaknot
xdvsplineにおいて、SP_TRUEの場合、not-a-knot条件での実行となり、 SP_FALSEの場合、natural条件での実行になる。
sig
入力信号
r
変換倍率。補間の場合は、何倍に点数を増やすか、間引きの場合は何倍に点数を減らすかを表す。
l
xdvinterpexのフィルタ次数の基準となる値。xdvinterpでは、デフォルト値として4が使用される。
a
xdvinterpexの正規化カットオフ周波数(ナイキスト周波数=1)。 xdvinterpでは、デフォルト値として0.5が使用される。
order
xdvdecimateexのフィルタ次数。 0にすると、FIRフィルタの場合は30次、IIRフィルタの場合は8次のデフォルト値が用いられる。
fir_flag
SP_TRUEを指定すると、xdvdecimateexに用いるフィルタにFIRフィルタが用いられ、 SP_FALSEを指定するとIIRフィルタが用いられる。
戻り値
処理結果がベクトル型で返ります。
説明
戻り値のベクトル型は、使用しなくなったらメモリの解放をして下さい。 それぞれの関数は、以下のような処理を行います。
関連項目
ベクトル型ベクトル型のメモリ

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