그래서 Mathnet 필터링 라이브러리를 사용하여 C#에서 로우 패스 필터를 구현하려고했습니다. 메서드에 필터 계수를 만드는 방법을 모르므로 문제가 있습니다. 누군가가 컷오프 주파수를 지정하는 방법을 말해 줄 수 있습니까? (단위당 샘플이어야합니다)? 예를 들어, 컷오프 주파수를 400Hz로 원한다면, 단위 당 샘플의 주파수는 얼마입니까? 감사합니다. .Mathnet 컷오프 주파수 필터링
public Filter(ISampleProvider _source, long Length, int _cutoff)
{
source = _source;
cutoffFrequency = _cutoff;
float[] s = new float[Length];
_source.Read(s, 0, (int)Length);
Normalize(s);
var coefficients = MathNet.Filtering.FIR.FirCoefficients.LowPass(_source.WaveFormat.SampleRate, (double)400/ ((double)source.WaveFormat.SampleRate/(double)Length), 2);
MathNet.Filtering.FIR.OnlineFirFilter filter = new MathNet.Filtering.FIR.OnlineFirFilter(coefficients);
double[] output = Array.ConvertAll(s, x => (double)x);
double[] output2 = filter.ProcessSamples(output);
output1 = new float[output2.Length];
for (int i = 0; i < output2.Length; i++)
{
output1[i] = Convert.ToSingle(output2[i]);
}
}
내 신호의 주파수 해상도하지만 신호가 전혀 변경하지 않는 것 이런 식으로 내 원하는 frequncy를 분할 시도했습니다.