0

Moving average

Hi all,

Is there a Scilab function to compute a running average over a specified number of column entries within an array:

i.e:

Values in array | 3 cell running average |

6 | 5.3 |

3 | 4.7 |

7 | 7.0 |

4 | 5.3 |

10 | 4.0 |

2 | |

0 |

Thanks in advance!

Andy

Scilab

0

Not as such. However, a routine for calculating a simple moving average can be easily written. Here is one. Please test it extensively before relying on it.

Please feel free to improve this code and report fail cases.

//Function to compute simple moving average. //vec is a simple row or column vector //windw is the number of data points over which the average has to be computed //avg is a column vector consisting of the computed moving averages //Example: //-->sma([6,3,7,4,10,2,0],3) // ans = // // 5.3333333 // 4.6666667 // 7. // 5.3333333 // 4. //Author: Rupak Rokade //FOSSEE, IIT Bombay function avg=sma(vec, windw) avg=[] for i=1:length(vec)-windw+1 av=sum(vec(i:i+(windw-1)))/windw avg=[avg;av] end endfunction

0

I tried to execute the same sma function, as proposed by Noiser1234, through two approaches, and the results are as follows. The first approach:

--> sma([6,3,7,4,10,2,0],3)And, the second approach:

ans =

5.3333333

4.6666667

7.

5.3333333

4.

--> iput = [6,3,7,4,10,2,0]; --> wndw = 3; --> movmean = sma(input,wndw);It seems we need to work a bit on the implementation!

at line 3 of function sma ( D:\Scilab\MovAvg.sce line 19 ) length: Wrong type for input argument(s).

29-10-18, 8:20 p.m.Noiser1234Login to add comment