У меня есть сигнал данных, который генерируется с постоянным интервалом в 500 мс.Это измерение в реальном мире, и поэтому в его базовой линии присутствует некоторый шум.Шум довольно постоянный.
Я получаю результаты измерений через регулярные промежутки времени и сохраняю их в круговом буферизированном буфере данных выборок.Этот скользящий буфер является массивом значений, которые расположены в позициях (0,1,2,3,4,5 ... -> n).Как только n-ая позиция в этом массиве достигнута, мой буфер переворачивает и перезаписывает значение в 0-ой позиции массива, затем значение в 1-ой позиции массива и так далее, пока значение в n-ой позиции не будет перезаписано (затем снова произойдет опрокидывание).Этот процесс повторяется снова и снова.Я использую скользящий буфер выборок, чтобы вычислить скользящее среднее и стандартное отклонение, и выполнить линейную экстраполяцию, используя данные в буфере.
Теперь для моей проблемы:
Сигнал реального мира может находиться в 3 штатах.Либо увеличивается с течением времени с неизвестной скоростью, либо уменьшается с течением времени с неизвестной скоростью, либо он также может оставаться довольно постоянным во времени, пока не будет обнаружено увеличение или уменьшение.(Мне нужно определить увеличение или уменьшение по достаточно стабильной базовой линии) Такое увеличение может произойти в любой момент.
Я хочу определить, увеличивается ли сигнал с течением времени, уменьшается с течением времени илиоставаясь постоянной с течением времени с хорошей степенью уверенности.Графически говоря, я ожидаю, что мои данные будут колебаться при некотором базовом значении и будут оставаться постоянными до некоторого времени t1, в этот момент сигнал будет либо увеличиваться, либо уменьшаться, и продолжать увеличиваться или уменьшаться до некоторого времени t2, в которое состояние изменится.Какой алгоритм мог бы эффективно это заметить?
Я подумал, может быть, используя производную, вычисленную по точкам данных в массиве, и если наклон касательной линии положительный, то график со временем увеличивается, если отрицательныйзатем уменьшается, а если 0, то постоянная?Не уверен, как реализовать это в Java на моем скользящем массиве или если он будет работать.
Я думаю, что достаточно надежный сигнал увеличения / уменьшения будет, если мои данные будут на 3 * stdDev выше или ниже скользящей средней, ноЯ не уверен, что это так.
Круговой массив:
private final static int NUM_SAMPLES = 100;
double[] samples = new double[NUM_SAMPLES];
int sampleIndex;
public boolean isBufPopulated() {
synchronized(this) {
return this.isBufPopulated;
}
}
public void addSample(double val) {
synchronized(this) {
samples[sampleIndex++] = val;
if(sampleIndex == NUM_SAMPLES) {
sampleIndex = 0;
isBufPopulated = true;
}
this.avg = calcAvg();
}
}
Моя базовая линия реального мира выглядит так:
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 3 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 3 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 3 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 3 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 3 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 3 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 3 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -9 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -11 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -11 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -11 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -11 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -11 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -11 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -11 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 1 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -2 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -4 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= -7 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 3 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 3 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 3 avgData= -3 stdDevData= 3 extrapolatedData= -3
data= 3 avgData= -3 stdDevData= 3 extrapolatedData= -3