ユーザ用ツール


reference:高度な演算

高度な演算

BIQUAD 出力配列(OUT),入力配列(IN),フィルタ係数配列(FP)

双二次フィルタを適用する

・指定された配列の全要素に対して以下の演算を行う。(0 <= t < len(IN))
OUT[t]=FP[0]*IN[t]+FP[1]*IN[t-1]+FP[2]*IN[t-2]-FP[3]*OUT[t-1]-FP[4]*OUT[t-2]

・1次元配列を指定するとモノラル、2次元配列を指定するとステレオ扱いになる。

※配列のインデックスが負の場合は、モノラル又は左チャンネルはFP[5..8]、右チャンネルはFP[9..12]の値を用いる。
 FP[5..12]の値は実行ごとに更新される。

・ローパスフィルタなど、主要な特性のフィルタ係数配列は BQPARAM 命令で得ることができる。

引数

出力配列

フイルタを適用した結果が格納される配列

入力配列

フイルタを適用する信号が格納されている配列

フィルタ係数配列

フィルタ係数が格納されている配列
・配列の要素数は13以上でなければならない。

DIM OD[2,1000],ID[2,1000],FP[13]
BQPARAM FP,#BQLPF,48000,8000,1/SQR(2)
BIQUAD OD,ID,FP 

BQPARAM フィルタ係数配列,フィルタ種別,サンプリング周波数,カットオフ周波数,Q値または帯域幅[,増幅率]

双二次フィルタのフィルタ係数を計算する

引数

フィルタ係数配列

フィルタ係数が格納される配列(長さが13以上であること)
・指定した配列の[5..12]は、この命令を実行しても変更されない

フィルタ種別

0 #BQAPF オールパスフィルタ カットオフ周波数付近の位相のみが変化する
1 #BQLPF ローパスフィルタ カットオフ周波数以下が通過する
2 #BQHPF ハイパスフィルタ カットオフ周波数以上が通過する
3 #BQBPF バンドパスフィルタ カットオフ周波数を中心とした指定の周波数帯域が通過する
4 #BQBSF バンドストップフィルタ カットオフ周波数を中心とした指定の周波数帯域を遮断する
5 #BQLSF ローシェルフフィルタ カットオフ周波数以下を指定の増幅率で増幅する
6 #BQHSF ハイシェルフフィルタ カットオフ周波数以上を指定の増幅率で増幅する
7 #BQPEQ ピーキングイコライザ カットオフ周波数を中心とした指定の周波数帯域を指定の増幅率で増幅する

サンプリング周波数

入力信号のサンプリング周波数
・0はエラーとなる。

カットオフ周波数

フィルタのカットオフ周波数

Q値または帯域幅

フィルタ種別 BPF/BSF/PEQでは帯域幅(単位:オクターブ)、それ以外ではQ値(フィルタ特性のなだらかさ)として扱う
・0はエラーとなる。

増幅率

フィルタの増幅率(単位:db)。フィルタ種別 #BQLSF #BQHSF #BQPEQ の時に記述が必要。

DIM OD[1000],ID[1000],FP[13]
BQPARAM FP,#BQLSF,48000,8000,1/SQR(2),3.0
BIQUAD OD,ID,FP 

FFT 出力実数部配列,出力虚数部配列,入力実数部配列,入力虚数部配列[,窓関数値配列]

複素数配列に対してフーリエ変換を行う

・指定する配列は全て同じ要素数で、要素数は2のn乗でなければならない。
・出力と入力の配列は同一でもよい。

引数

出力実数部配列,出力虚数部配列

演算結果が収容される実数部と虚数部の複素数配列

入力実数部配列,入力虚数部配列

演算する実数部と虚数部の複素数配列

窓関数値配列

窓関数の値が収容されている配列
・指定した場合、入力の複素数配列に同一インデックスの要素値を乗算した後、フーリエ変換を行う。
・窓関数値配列はFFTWFN命令で得ることもできる。

DIM iR[1024],iI[1024],WF[1024]
DIM oR[1024],oI[1024]
FFTWFN WF,3
FFT oR,oI,iR,iI,WF 

IFFT 出力実数部配列,出力虚数部配列,入力実数部配列,入力虚数部配列

複素数配列に対してフーリエ逆変換を行う

・指定する配列は全て同じ要素数で、要素数は2のn乗でなければならない。
・出力と入力の配列は同一でもよい。

引数

出力実数部配列,出力虚数部配列

演算結果が収容される実数部と虚数部の複素数配列

入力実数部配列,入力虚数部配列

演算する実数部と虚数部の複素数配列

DIM iR[1024],iI[1024]
DIM oR[1024],oI[1024]
IFFT oR,oI,iR,iI 

FFTWFN 配列,窓関数種別

窓関数値配列を得る

引数

配列

窓関数値を収容する配列

窓関数種別

0 #WFRECT 矩形窓
1 #WFHAMM ハミング窓
2 #WFHANN ハニング窓
3 #WFBLKM ブラックマン窓

DIM WF[1024]
FFTWFN WF,#WFHAMM

ARYOP 演算タイプ,結果格納配列,パラメータ1,パラメータ2[,パラメータ3]

配列内要素の一括演算を行う

・配列の先頭から、結果格納配列の末尾まで、それぞれの要素間で演算タイプで指定された演算を行い、結果格納配列に演算結果を格納する。
・パラメータ配列の要素数が結果格納配列の要素数と異なる場合、配列の末尾まで到達したら配列の先頭に戻ってくりかえし参照する。

引数

演算タイプ

0 #AOPADD 加算(p1+p2)
1 #AOPSUB 減算(p1-p2)
2 #AOPMUL 乗算(p1*p2)
3 #AOPDIV 除算(p1/p2)
4 #AOPMAD 積和(p1*p2+p3)
5 #AOPLIP 線形補間(p1*p3+p2*(1-p3))
6 #AOPCLP クランプ(p1の値をp2<=x<=p3の範囲内に丸める)

結果格納配列

演算結果を格納する数値配列

パラメータ1,パラメータ2,パラメータ3

パラメータ1,2,3には、数値配列、もしくは通常数値を指定できる
・通常数値を指定した場合すべての要素演算にその数値が使用される。

reference/高度な演算.txt · 最終更新: 2023/12/07 15:51 (外部編集)

ページ用ツール