计算列表中每个信标的平均值

时间:2019-04-04 09:01:07

标签: java android

我有一个名为onEddystonesFound的方法,它大约每秒运行一次。作为参数,它具有按RSSI值排序的信标列表,因此可以在索引[0]中找到最接近的信标。

每个信标都有一个UID,可以用例如来调用。 beacon.get(0).instance和一个RSSI值,可以使用例如beacon.get(0).instance

对于4个最近的信标,我想为每个信标收集10个最新的RSSI值,并计算10个值的平均值和标准偏差,以消除异常值,并计算剩余值的新平均值。我怎样才能做到最好呢?

我尝试了类似以下代码的方法,但是我不认为这是正确的方法。有人可以帮忙吗?

private Map<String, List<Eddystone>> beaconMap = new HashMap<>();
private Map<String, Double> averageMap = new HashMap<>();

@Override
public void onEddystonesFound(List<Eddystone> beacon) {
      //populates map
      for (int i = 0; i < beacon.size(); i++) {
           beaconMap.put(beacon.get(i).instance, beacon);
      }

         //loops through map
         for (List<Eddystone> e : beaconMap.values()) {
              int sum = 0;
              //loops through list in map
              for (int i = 0; i < e.size(); i++) {
                   sum = sum + e.get(i).rssi;
              }

              if (e.size() >= 10) {
                 double average = sum / e.size();
                 for (int i = beaconMap.size() - 10; i < beaconMap.size(); i++) {
                      List<String> keys = new ArrayList<>();
                      keys.addAll(beaconMap.keySet());
                      averageMap.put(keys.get(i), average);
                 }

              }
}

0 个答案:

没有答案