Averages/Simple moving average: Difference between revisions

Content added Content deleted
(crosslink to the similar Standard Deviation task)
(→‎{{header|Java}}: DIE, REPETITION!)
Line 265: Line 265:
<lang java5>import java.util.LinkedList;
<lang java5>import java.util.LinkedList;
public class MovingAverage {
public class MovingAverage {
LinkedList<Double> window ;
LinkedList<Double> window;
private int size;
private int size;
public MovingAverage(int size){
public MovingAverage(int size) {
window = new LinkedList<Double>();
window = new LinkedList<Double>();
this.size = size;
this.size = size;
}
}
public static void main(String[] args){
public static void main(String[] args) {
double[] testData = {1,2,3,4,5,5,4,3,2,1};
MovingAverage ma = new MovingAverage(3);
MovingAverage ma = new MovingAverage(3);
for (double x : testData) {
ma.newNum(1);System.out.println(ma.getAvg());
ma.newNum(2);System.out.println(ma.getAvg());
ma.newNum(x);
ma.newNum(3);System.out.println(ma.getAvg());
System.out.println(ma.getAvg());
}
ma.newNum(4);System.out.println(ma.getAvg());
ma.newNum(5);System.out.println(ma.getAvg());
ma.newNum(5);System.out.println(ma.getAvg());
ma.newNum(4);System.out.println(ma.getAvg());
ma.newNum(3);System.out.println(ma.getAvg());
ma.newNum(2);System.out.println(ma.getAvg());
ma.newNum(1);System.out.println(ma.getAvg());


System.out.println();
System.out.println();


ma = new MovingAverage(5);
ma = new MovingAverage(5);
for (double x : testData) {
ma.newNum(1);System.out.println(ma.getAvg());
ma.newNum(2);System.out.println(ma.getAvg());
ma.newNum(x);
ma.newNum(3);System.out.println(ma.getAvg());
System.out.println(ma.getAvg());
}
ma.newNum(4);System.out.println(ma.getAvg());
ma.newNum(5);System.out.println(ma.getAvg());
ma.newNum(5);System.out.println(ma.getAvg());
ma.newNum(4);System.out.println(ma.getAvg());
ma.newNum(3);System.out.println(ma.getAvg());
ma.newNum(2);System.out.println(ma.getAvg());
ma.newNum(1);System.out.println(ma.getAvg());
}
}


public void newNum(double num){
public void newNum(double num) {
window.add(num);
window.add(num);
if(window.size()>size){
if (window.size() > size) {
window.removeFirst();
window.removeFirst();
}
}
}
}


public double getAvg(){
public double getAvg() {
if(window.isEmpty()) return 0;
if (window.isEmpty()) return 0;
double ret = 0;
double ret = 0;
double sum = 0;
double sum = 0;
for(double num : window){
for (double num : window) {
sum += num;
sum += num;
}
}
Line 338: Line 328:
3.8
3.8
3.0</pre>
3.0</pre>

=={{header|Perl}}==
=={{header|Perl}}==
<lang perl>sub sma ($)
<lang perl>sub sma ($)