How do I calculate the RMS of every 5 values?

22 Ansichten (letzte 30 Tage)
Shawn Imming
Shawn Imming am 3 Nov. 2016
Bearbeitet: krishna teja am 28 Jul. 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

Akzeptierte Antwort

Guillaume
Guillaume am 3 Nov. 2016
Bearbeitet: Guillaume am 3 Nov. 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 Kommentare
Julien Rodriguez
Julien Rodriguez am 7 Jan. 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 am 28 Jul. 2023
Bearbeitet: krishna teja am 28 Jul. 2023
awesome piece of code, Guillaume !!! have a great year
reduced my code execution from 1 sec to 0.025 sec !!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by