MathNet.Filteringを使って見た。
NugetからMathNet.filteringパッケージをインストールする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using MathNet.Filtering; ...... //Bandpass filter double f_low = 4000; double f_high = 10000; bandpass = OnlineFilter.CreateBandpass(ImpulseResponse.Finite, sr, f_low, f_high); .... Complex[] filterd = new Complex[datapt]; for(int i=0; i<sgdata.Length; i++) { var fil_Real = bandpass.ProcessSample(sgdata[i].Real); var fil_Imaginary = bandpass.ProcessSample(sgdata[i].Imaginary); filterd[i] = fil_Real + Complex.ImaginaryOne * fil_Imaginary; } |
ProcessSampleメッソドは、引数として配列を受けるやつもあるけど、Complex配列は渡せないみたいなので、1データずつ処理するやつを使った。 フィルターの次数とかどこかで設定できると思うけど、今回は使えるかどうか見るだけなので、とりあえず動かしてみた。
というわけで、MathNet.Filteringも簡単に使えそうなことが解った。