Я пытаюсь реализовать алгоритм Пан Томпкинса в моем первом приложении Java. Я сделал следующий цикл для фильтра нижних частот, основанный на оригинальной статье, но я продолжаю получать сообщение об ошибке IndexOutOfBoundsException при попытке его запустить. Может кто-то видит, где я ошибаюсь?
Я не хочу делать фильтр с коэффициентами, мне просто нужна помощь, чтобы заставить формулу работать, пожалуйста.
/**
* Lowpass filter
* lpfilt() implements the digital filter represented by the difference equation:
* y(nT) = 2y(nT - T) - y(nT - 2 T) + x(nT)- 2x(nT- 6T)+x(nT- 12T)
*/
public static ArrayList<Double> lpfilter(ArrayList<Double> ecg) {
int N = ecg.size();
ArrayList<Double> ecgLP = new ArrayList<Double>();
for (int n = 0; n < N; n++) {
if (n - 12 < 0) {
ecgLP.set(n, ecg.get(n));
} else {
ecgLP.set(n, 2 * ecgLP.get(n - 1) - ecgLP.get(n - 2) + ecg.get(n) - 2 * ecg.get(n - 6) + ecg.get(n - 12));
}
}
return ecgLP;
}