MATLAB Answers

How to calculate moving average in a matrix?

94 views (last 30 days)
Hi Guys, I have got a matrix :378x9. I need to calculate the moving average with a window size of 120(starting from row one). Can somebody help me please? By the way, i need to do it also for the covariance(i mean,"A MOVING COVARIANCE). Thank you very much Andrea

  2 Comments

Joseph Cheng
Joseph Cheng on 8 Oct 2015
is this a window of 120x9 or are you looking to perform the averaging window per column.

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 8 Oct 2015
Edited: Image Analyst on 8 Oct 2015
Try conv2:
kernel = ones(120,1)/120;
output = conv2(yourSignal, kernel, 'valid');
Since the window does not leave the boundaries of your signal, of course the output signal will not have as many elements as your input signal.

  1 Comment

Andrea Finocchiaro
Andrea Finocchiaro on 8 Oct 2015
Thank you very much,your code runs very good! Do you think is possible to do the same also to the same for the covariance? I mean to compute the covariance matrix with a window of 120 months?A kind of "moving" covariance . I need these computation because I am working with portdolio optimization(like Markowitz).

Sign in to comment.

More Answers (1)

Grzegorz Knor
Grzegorz Knor on 7 Apr 2017
From MATLAB R2016a there are functions movmean and movvar which do not require additional toolboxes.

  1 Comment

Image Analyst
Image Analyst on 7 Apr 2017
True, and it offers some edge handling options ('shrink', 'discard', 'fill') that conv2() does not have.
conv2() also does not require any toolboxes because it's in base MATLAB.

Sign in to comment.

Sign in to answer this question.