C# LINQでFIRフィルタ
LINQを使った,FIRフィルタ演算を行う関数.
ソースコード
/// <summary> /// FIRフィルタをかけたデータを返す /// </summary> /// <param name="data">入力データ</param> /// <param name="coefficients">フィルタ係数</param> /// <returns>FIRフィルタをかけたデータ</returns> List<double> FiniteImpulseResponseFilter( List<double> data, List<double> coefficients) { return Enumerable.Range(0, data.Count - coefficients.Count) .Select(i => data.Skip(i).Take(coefficients.Count) .Zip(coefficients, (d, c) => d * c).Sum()) .ToList(); }
C# LINQで移動平均 - whoopsidaisies's diary
をベースにした.
.Zip(coefficients, (d, c) => d * c).Sum()
の部分で入力データとフィルタ係数の積和演算を行っている.