Непрерывные данные от трех датчиков ( x, y и z ) сохраняются в Hashmap (имена датчиков - Key , а данные в ArrayList - value ).Для данных от каждого датчика мне нужно применить фильтр нижних частот.Я пытаюсь сделать это следующим образом:
ArrayList<Float> TempArray = new ArrayList();
Map<String,ArrayList<Float>> FilteredDataOfSensors = new HashMap<String, ArrayList<Float>>();
float filteredData;
for(Map.Entry<String , ArrayList<Float>>Sensors:ContinuousDataFromSensors.entrySet())
{
TempArray = AccessPointId.getValue();
String SensorName = Sensors.getKey();
ArrayList<Float> arrayOfFilteredData = FilteredDataOfSensors.get(SensorName);
if(arrayOfFilteredData == null)
{
arrayOfFilteredData = new ArrayList<Float>();
FilteredDataOfSensors.put(SensorName,arrayOfFilteredData);
}
if(arrayOfFilteredData.size() == 0 && TempArray.size() == 1) {filteredData = TempArray.get(0); Log.d("Test", "Inside If");}
else if(arrayOfFilteredData.size() == 0 && TempArray.size() > 1) {filteredData = TempArray.get(TempArray.size()-1);Log.d("Test", "Inside else If");}
else { FilteredData = (float) (0.5 * TempArray.get(TempArray.size()-1) + 0.5 * arrayOfFilteredData.get(arrayOfFilteredData.size()-1)); Log.d("Test", "Inside else");}
arrayOfFilteredData.add( FilteredData);
}
Во время выполнения приведенного выше фрагмента кода цикл никогда не входит в условие else .
В моем случае, когда приложение запускается, оно может не получить данные со всех датчиков в начале.Приведенный выше фрагмент кода запускается, когда имеется хотя бы одна информация от каждого датчика.Таким образом, при запуске кода может быть много данных от датчика и только одна информация от другого датчика.Мне нужно отфильтровать данные датчика, используя прошлые данные и текущие данные.
Хеш-карта ContinuousDataFromSensors
содержит необработанные данные ( Ключ : имя датчика, Значение : непрерывные данные датчика в ArrayList )
Правильный ли мой подход?
Спасибо.