# How to calculate moving average in a matrix?

106 views (last 30 days)
Andrea Finocchiaro on 8 Oct 2015
Commented: Image Analyst on 7 Apr 2017
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

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

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

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 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.