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 и метод Уэлча.

Другие вопросы по тегам