# How to Calculate Moving Sum in MATLAB?

The **moving sum of a vector** can be referred to as the **running sum of each window **of some **size k** in the vector.

Suppose

vector = [1 2 3 4 5]Then the moving sum of each window of size 2 are

[1 2] = 3

[2 3] = 5

[3 4] = 7

[4 5] = 9

Then vector of moving sums is

[3 5 7 9]

Matlab allows us to perform this operation effectively using **movsum() **method. Different **s**yntaxes associated with movsum() method are:

- M = movsum(A, k)
- M = movsum(A, [kb kf])
- M = movsum(___, dim)
- M = movsum(___, nanflag)

Let us now discuss the above syntax in detail:

**movsum(A, k)**

- The method returns an array of k-size window sums of vector A.
- The returned vector will have the same size as A.
- If k is odd, then the window is centered about the element in the current position.

Suppose A = [1 2 3 4 5] and k = 3, then sliding window size is 3.

Since k is odd, window is centered at every index and considers one value from left and one value from right into a window.

Then windows are

[1 2] –> Since at first index(i.e value 1) there is no left value, then window gets truncated to size 2

[1 2 3]

[2 3 4]

[3 4 5]

[4 5] —> Since at last index(i.e value 5) there is no right value, then window gets truncated to size 2

- If
**k is even**, the window is centered on the**current and previous elements**. - When there are
**few elements**in the window, then the window automatically gets**truncated**and considers the sum of the truncated window.

## Matlab

`% Input vector` `A = [1 2 3 4 5];` `disp(` `"Vector :"` `);` `disp(A);` `% Moving sum of A of size 3` `M = movsum(A,3);` `disp(` `"Moving sum :"` `);` `disp(M);` |

**Output :**

**movsum(A, [kb kf])**

Returns the moving sum of vector A, with every window, is **centered at the present position **and having left side** kb **elements and right side **kf** elements having a total window of size** kb+kf+1**.

Suppose A = [1 2 3 4 5] and [kb = 2 kf = 0], then sliding window size is kb+kf+1 = 3

At every element previous 2 elements and next 0 elements are considered into the window along with current element.

Then windows are

[1]

[1 2]

[1 2 3]

[2 3 4]

[3 4 5]

## Matlab

`% Input vector` `A = [1 2 3 4 5];` `disp(` `"Vector :"` `);` `disp(A);` `% Moving sum of A of size 3` `% every window having 2 elements` `% to left and 0 elements to the` `% right` `M = movsum(A,[2 0]);` `disp(` `"Moving sum :"` `);` `disp(M);` |

**Output :**

**movsum(___,dim)**

- Returns the moving sum of matrix by calculating across each dimension of
**dim**. **dim**takes two values**1 or 2**corresponds to operate along**each column**and along**each row**respectively.- The
**default value**of**dim = 1**, i.e perform moving sum of matrix across each column.

## Matlab

`% Input vector` `A = [1 2 3; 4 5 6; 7 8 9];` `disp(` `"Matrix :"` `);` `disp(A);` `% Moving sum of A of size k=3` `% along each row(dim=1)` `M = movsum(A,3,2);` `disp(` `"Moving sum :"` `);` `disp(M);` |

**Output :**

**movsum(___,nanflag)**

**nanflag**value decides whether to**include or exclude NaN**value of the vector in moving sum or not.**nanflag**takes two values**‘includenan’ or ‘omitnan’**corresponds to including NaN elements and excluding NaN elements respectively.**omitNaN’**considers NaN values as**0**.

**Note :** NaN + number = NaN

## Matlab

`% Input vector` `A = [3 5 NaN 9 0 NaN];` `disp(` `"Vector :"` `);` `disp(A);` `% Including NaN values` `B = movsum(A,3,` `'includenan'` `);` `disp(` `"Moving sum Include NaN :"` `);` `disp(B);` `% Excluding NaN values` `B = movsum(A,3,` `'omitnan'` `);` `disp(` `"Moving sum Exclude NaN :"` `);` `disp(B);` |

**Output :**