Среднее среднеквадратичное значение трехмерного аудиосигнала в Python

Я довольно новичок в программировании и Python. Я работаю над проектом, в котором я создал банк фильтров Auditory с двумя банками фильтров Gammatone. Теперь я получил матрицу 39x10x8545. Я хочу рассчитать среднее значение среднеквадратичной энергии по оси времени (более 8545), чтобы уменьшить размерность сигнала. Может кто-нибудь предложить мне лучший способ сделать это эффективно в Python, потому что я не могу позволить себе много памяти из-за очень большого звукового сигнала. Заранее спасибо.

2 ответа

Решение

Среднеквадратичное значение сигнала является среднеквадратичным значением, которое не совпадает со средним. Таким образом, вам нужно выполнить расчет RMS.

math.sqrt(numpy.mean(x*x))

На этом сайте есть несколько других страниц, которые обсуждают это далее: здесь, здесь, здесь

Я хотел бы ответить на этот вопрос сам, основываясь на ответе Джмоффата. Я попробовал его ответ, но обнаружил, что numpy.pow() дал мне очень медленные результаты. Поэтому я попытался с помощью

math.sqrt(numpy.mean(x**2)) 

Это дало мне более быстрые результаты. Я это понимаю math.pow() медленный, так как он должен учитывать многие другие вещи, такие как дробные силы и другие вещи, ясно обсуждаемые здесь. Контекст важен, так как я уверен, что у меня будут только целые числа, а точнее "2".

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