Я совсем новичок в программировании и Python. Я работаю над проектом, в котором я создал банк фильтров Auditory с двумя банками фильтров Gammatone. Теперь я получил матрицу 39x10x8545. Я хочу рассчитать среднее значение среднеквадратичной энергии по оси времени (по 8545), чтобы уменьшить размерность сигнала. Может ли кто-нибудь предложить мне лучший способ сделать это эффективно в Python, потому что я не могу позволить себе много памяти из-за очень большого аудиосигнала. Заранее спасибо.
Среднее среднеквадратичное значение 3D-аудиосигнала в Python
Ответы (2)
Среднеквадратичное значение сигнала представляет собой среднеквадратичное значение, которое не совпадает со средним значением. Поэтому вам необходимо выполнить расчет RMS.
math.sqrt(numpy.mean(x*x))
На этом сайте есть несколько других страниц, на которых это обсуждается более подробно: -arrays-of-numpy">здесь, здесь, здесь
Я хотел бы сам ответить на этот вопрос, основываясь на ответе Джимоффата. Я попробовал его ответ, но обнаружил, что numpy.pow() дает очень медленные результаты. Поэтому я попытался использовать
math.sqrt(numpy.mean(x**2))
Это дало мне более быстрые результаты. Я понимаю, что math.pow()
работает медленно, так как он должен учитывать многие другие вещи, такие как дробные степени и другие вещи, четко обсуждаемые здесь. Контекст важен, так как я уверен, что у меня будут только целые степени, а точнее «2».