Cumulative RMS in Matlab

13 views (last 30 days)
Frederick Wells
Frederick Wells on 4 Mar 2021
Edited: Frederick Wells on 8 Mar 2021
Hi,
I'm trying to find the cumulative RMS of a vector. (The data happens to be model error - labelled devCoM for deviation of centre of mass. The calculation should get less accurate as time proceeds, so cumulative error is important.)
I can find the cumulative sum by taking
cumsum(devCoM)
...but this fluctuates about zero.
I can find the RMS of the entire dataset by taking
sqrt(sum(devCoM.^2)
...but this doesn't reveal the expected increase in error over time.
Is there some way I could combine these methods?
Thanks,
Frederick

Accepted Answer

Jan
Jan on 4 Mar 2021
Edited: Jan on 4 Mar 2021
Start with a mathematical definition of what you want to achieve.
I guess you want this:
x = rand(1, 100); % Your data
% "Cumulative root mean square"
y = sqrt(cumsum(x.*x) ./ (1:numel(x)))
So the cumulative concerns the mean of the squared elements only, correct?
  1 Comment
Frederick Wells
Frederick Wells on 8 Mar 2021
Edited: Frederick Wells on 8 Mar 2021
Great, this does just want I wanted it to! Thanks very much :)
Had some trouble for a while since I was using a column vector and the denominator produces a row, so the code that ultimately worked for me was
y = sqrt(cumsum(x.^2) ./ (1:numel(x))');

Sign in to comment.

More Answers (0)

Categories

Find more on Elementary Math in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!