Ширина ячейки Math.Net FFT

Я использую 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();

person Hugoagogo    schedule 20.08.2019    source источник
comment
Ширина бина зависит от частоты дискретизации и количества бинов. Вы можете только давать/брать из этих переменных, чтобы изменить их. // Возможно, вам больше повезет со стеком обработки сигналов ( dsp.stackexchange.com ).   -  person KDecker    schedule 20.08.2019


Ответы (1)


Используйте несколько более коротких БПФ (размер которых соответствует требуемому разрешению), при необходимости перекрывайте окна, а затем комбинируйте (усредняйте и т. д.) величины спектра по БПФ. См. STFT и метод Уэлча.

person hotpaw2    schedule 21.08.2019