prevNoise = null;
prevSignal = null;
prevInput = null;
return inputData;
}
DoubleData inputDoubleData = (DoubleData) inputData;
double[] input = inputDoubleData.getValues();
int length = input.length;
/* no previous data, just return input */
if (prevNoise == null) {
prevNoise = new double[length];
prevSignal = new double[length];
prevInput = new double[length];
return inputData;
}
double[] smoothedInput = smooth(input);
double[] noise = estimateNoise(smoothedInput);
double[] signal = filter(input, smoothedInput, noise);
System.arraycopy(noise, 0, prevNoise, 0, length);
System.arraycopy(signal, 0, prevSignal, 0, length);
System.arraycopy(input, 0, prevInput, 0, length);
DoubleData outputData = new DoubleData(signal, inputDoubleData
.getSampleRate(),
inputDoubleData.getFirstSampleNumber());
return outputData;
}