2016-12-04 2 views
1

Я хочу вычислить квадрат среднего квадрата функции в Python. Моя функция находится в простой форме, такой как y = f (x). x и y - массивы.Корневой квадрат функции в python

Я попробовал Numpy and Scipy Docs и что-то не мог найти.

+0

Какова функция, которую вы пытаетесь вычислить? Среднеквадратичное значение y? – Praveen

+0

Это также помогло бы, если бы вы могли добавить примерный массив и ожидаемое решение ... – Praveen

ответ

3

я буду считать, что вы хотите, чтобы вычислить выражение, приведенное в следующем псевдокоде:

ms = 0 
for i = 1 ... N 
    ms = ms + y[i]^2 
ms = ms/N 
rms = sqrt(ms) 

то есть квадратный корень из среднего значения квадратов значений элементов y.

В NumPy, вы можете просто квадрат y, возьмите его mean, а затем его square root следующим образом:

rms = np.sqrt(np.mean(y**2)) 

Так, например:

>>> y = np.array([0, 0, 1, 1, 0, 1, 0, 1, 1, 1]) # Six 1's 
>>> y.size 
10 
>>> np.mean(y**2) 
0.59999999999999998 
>>> np.sqrt(np.mean(y**2)) 
0.7745966692414834 

Do уточнить ваш вопрос, если вы имеете в виду спросите что-нибудь еще.

+0

Большое спасибо. Я все еще что-то удивляюсь. Часть определения в википедии говорит, что RMS на самом деле является пределом. Я имею в виду, что это продолжается и продолжается. Но в вашем ответе была рассмотрена только первая степень. Я думаю, что мы пренебрегаем остальными как-то во время расчета? Ваш ответ работает. Но я прошу это прояснить весь предмет. –

+0

@ordinary Если вы пытаетесь вычислить значение RMS синусоидальной волны (т. Е. F (x) - синусоидальная функция) или некоторые такие, то вам нужно выполнить _integration_. Это приближается как суммирование здесь. Предел приходит, потому что вам нужно принимать бесконечно малые интервалы для вашей суммы. Другими словами, вы можете получить более точную оценку значения RMS, если вы используете более тонкое разрешение в 'x'. – Praveen

+0

Предупреждение: в numpy, если число слишком велико по сравнению с их типом (dtype в python), функция мощности может возвращать отрицательные значения. Чтобы этого избежать, иногда полезно использовать значения. Пример: >> np.sqrt (np.mean (y.astype (np.dtype (np.int64)) ** 2)). Не очень приятно в коде, но он будет работать! – PatriceG

Смежные вопросы