ButterWorth巴特沃斯滤波64B位 C++库,支持高通、低通、带通、带阻滤波。需要32位库请私信。
提供C#调用方法:
public static class ButterFilter
{
[DllImport("V_Filter.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public extern static void DeleteFilter(IntPtr filter);
[DllImport("V_Filter.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public extern static double FilterProcess(IntPtr filter, double data);
[DllImport("V_Filter.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public extern static IntPtr CreateHighPass(double sampleRate, double order, double cutoffFrequency);
[DllImport("V_Filter.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public extern static IntPtr CreateLowPass(double sampleRate, double order, double cutoffFrequency);
[DllImport("V_Filter.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public extern static IntPtr CreateBandPass(double sampleRate, double order, double centerFrequency, double bandWidth);
[DllImport("V_Filter.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public extern static IntPtr CreateBandStop(double sampleRate, double order, double centerFrequency, double bandWidth);
}
初始化滤波器:
lowpassFilter= ButterFilter.CreateLowPass(sampleRate, order, endFreq);
highpassFilter= ButterFilter.CreateHighPass(sampleRate, order, endFreq);
bandstopFilter= ButterFilter.CreateBandStop(sampleRate, order,beginFreq, endFreq - beginFreq);
bandPassFilter= ButterFilter.CreateBandPass(sampleRate, order,beginFreq, endFreq - beginFreq);
数据滤波:
value = ButterFilter.FilterProcess(highpassFilter, value);
1