How do I calculate the RMS of every 5 values?

31 visualizaciones (últimos 30 días)
Shawn Imming
Shawn Imming el 3 de Nov. de 2016
Editada: krishna teja el 28 de Jul. de 2023
Hello, I have a vector of 66000 values and I would like to know the root mean square (RMS) of every 5 values. Do I need a loop for this? Or is there some easier way to solve this?
Thanks in advance! Shawn

Respuesta aceptada

Guillaume
Guillaume el 3 de Nov. de 2016
Editada: Guillaume el 3 de Nov. de 2016
If you mean you want the RMS of the first 5 values, followed by the RMS of the next 5 values, etc., then assuming your vector length is a multiple of 5 simply reshape it into columns of 5 elements:
rms = sqrt(mean(reshape(yourvector, 5, []) .^ 2));
If you mean you want a moving rms (rms of elements 1-5, rms of elements 2-6, etc.), then use movmean:
movrms = sqrt(movmean(yourvector .^ 2, 5));
  5 comentarios
Julien Rodriguez
Julien Rodriguez el 7 de En. de 2022
Really Guillaume I don't know how to thank you properly.
You should be in the Avengers cause you're my little hero.
plot(love);
krishna teja
krishna teja el 28 de Jul. de 2023
Editada: krishna teja el 28 de Jul. de 2023
awesome piece of code, Guillaume !!! have a great year
reduced my code execution from 1 sec to 0.025 sec !!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by