Jestem dość nowy w programowaniu i pytonie. Pracuję nad projektem, w którym zbudowałem branki z filtrem słuchowym dwoma brzegami filtrów Gammatone. Teraz skończyłem na matrycy 39x10x8545. Chcę obliczyć średnią energii RMS w ramach osi czasu (przez 8545), aby zmniejszyć wymiarowość sygnału. Czy ktoś może zasugerować lepszą metodę, aby zrobić to skutecznie w Pythonie, ponieważ nie mogę sobie pozwolić na wiele pamięci z powodu sygnału audio, który jest bardzo duży. Z góry dziękuję.

0
Nikki_Champ 15 sierpień 2014, 13:45

2 odpowiedzi

Najlepsza odpowiedź

Sygnał RMS jest sygnał korzeniowy kwadrat, który nie jest taki sam jak średnia. Musisz więc wykonać obliczenia RMS.

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

Istnieje kilka innych stron na tej stronie, która omówimy to dalej: Tutaj Oto, Oto

1
Community 23 maj 2017, 12:02

Chciałbym odpowiedzieć na to pytanie, oparte na odpowiedziach Djmoffat. Próbowałem jego odpowiedzi, ale odkryłem, że numpy.pow () dał mi bardzo powolne wyniki. Więc próbowałem użyć

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

To dało mi szybsze wyniki. Rozumiem, że math.pow() jest powolny, ponieważ musi rozważyć wiele innych rzeczy, takich jak frakcyjne moce i inne rzeczy wyraźnie omawiane Tutaj. Kontekst jest ważny, ponieważ jestem pewien, że będę miał tylko uprawnienia całkowitą i dokładniej "2".

0
Community 23 maj 2017, 10:29