Math.Net FFT Bin Width
Я использую Math.net для расчета БПФ некоторых реальных данных.
Это работает, как и ожидалось, однако мои данные реального мира могут иметь сотни тысяч точек выборки, что приводит к очень узкой ширине ячейки в моем БПФ.
Есть ли какие-либо процессы, которые я могу использовать, чтобы уменьшить количество бинов, скажем, 1000, при этом все еще включая частотные компоненты из всего моего набора данных.
Грубый пример кода ниже.
Complex[] comp = input_data.Select(x => new Complex(x, 0)).ToArray();
Fourier.Forward(comp);
mag= comp.Select(c => c.Magnitude).Take(comp.Length / 2).ToArray();
freq = Fourier.FrequencyScale(comp.Length, 1000).Take(comp.Length / 2).ToList();
1 ответ
Используйте несколько более коротких БПФ (размер которых соответствует требуемому разрешению), при необходимости перекрывайте окна, а затем объединяйте (средние и т. Д.) Величины спектра по БПФ. См. STFT и метод Уэлча.