Cumulative RMS in Matlab

34 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)

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!