/// <summary> /// フィルタのインパルス応答を計算する。 /// </summary> /// <param name="f">フィルタ</param> /// <param name="len">インパルス応答の長さ</param> /// <returns>インパルス応答</returns> public static double[] GetImpulseResponse(Filter.IFilter f, int len) { double[] x = new double[len]; x[0] = f.GetValue(1); for (int i = 1; i < len; ++i) { x[i] = f.GetValue(0); } return(x); }
/// <summary> /// フィルタの周波数応答を計算する。 /// </summary> /// <param name="f">フィルタ</param> /// <param name="len">インパルス応答の長さ</param> /// <returns>周波数応答</returns> public static SpectrumAnalysis.Spectrum GetFrequencyResponse(Filter.IFilter f, int len) { len = SoundLibrary.BitOperation.FloorPower2(len); double[] x = GetImpulseResponse(f, len); return(SpectrumAnalysis.Spectrum.FromTimeSequence(x)); }