Этот вопрос относится к Кратковременному преобразованию Фурье SciPy для обработки сигналов.
По какой-то причине я не понимаю, размер выходного «массива частот дискретизации» точно равен размеру хмеля. Из документации:
nperseg : int, optional
Length of each segment. Defaults to 256.
noverlap : int, optional
Number of points to overlap between segments. If None, noverlap = nperseg // 2. Defaults to None. When specified, the COLA constraint must be met (see Notes below).
f : ndarray
Array of sample frequencies.
hop size H = nperseg - noverlap
Я новичок в обработке сигналов и преобразованиях Фурье, но, насколько я понимаю, STFT просто разбивает аудиофайл на сегменты («временные рамки»), на которых вы выполняете преобразование Фурье. Поэтому, если я хочу сделать STFT на 100 таймфреймах, я бы ожидал, что на выходе получится матрица размером 100 x F, где F - массив измеренных частот («измеренный», вероятно, здесь не то слово, но Вы понимаете, о чем я).
Это то, что делает реализация SciPy, но размер f
вот что меня беспокоит. Предполагается, что это будет массив, описывающий различные частоты, например [0Hz 500Hz 1000Hz]
, и это так, но по некоторым причинам его размер точно такой же, как и размер прыжка. Если размер скачка равен 700, количество измеренных частот равно 700.
Размер скачка - это число выборок (т. Е. Времени) между каждым таймфреймом, и он правильно рассчитывается как H = nperseg - noverlap
, но что это связано с массивом частот?
Редактировать: Связано с этот вопрос