91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 16KB
    文件類型: .java
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-10
  • 語言: Java
  • 標簽: 定位算法??

資源簡介

三角形加權質心定位算法常用于目前流行的室內定位,經過測試可以使用,并已應用到我的實際項目中

資源截圖

代碼片段和文件信息

package?com.indoor.navigation.api.core.algorithm;

import?com.indoor.navigation.api.core.Dealer;
import?com.indoor.navigation.api.entity.Coordinate;
import?com.indoor.navigation.api.entity.IndoorDevice;
import?com.indoor.navigation.api.entity.IndoorLocation;
import?com.indoor.navigation.api.entity.Round;
import?com.logg.Logg;

import?java.util.ArrayList;
import?java.util.Collections;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Map;

/**
?*?三角形加權質心定位算法
?*/
public?class?LocationAlgorithm?implements?Dealer?{

????//?所有組合的總權值
????private?double?totalWeight;

????//?定位結果
????private?IndoorLocation?location;

????//?用來求組合數的數組
????private?Integer[]?a;

????@Override
????public?IndoorLocation?getLocation(Map?indoorDeviceMap)?{
????????location?=?new?IndoorLocation();

????????//?對掃描到的最新設備進行分組
//????????Map?indoorDeviceMap?=?deviceGroup(indoorDevices);
//
//????????//?如果接收的定位設備小于3個則不能定位
//????????if?(indoorDeviceMap.size()?//????????????return?null;
//????????}

????????//?處理根據設備地址分組后的數據
????????List?devices?=?processRSSISignals(indoorDeviceMap);

????????//?如果定位設備大于3個,對其進行排序后取?RSSI?最大的前3個用來定位
????????int?deviceCount?=?devices.size();
????????if?(deviceCount?>?3)?{
????????????Collections.sort(devices);//?排序
????????????devices?=?new?ArrayList<>(devices.subList(deviceCount?-?3?deviceCount));
????????????for?(IndoorDevice?item?:?devices)?{
????????????????Logg.e(item.getBeaconDevice().getDeviceName()?+?“?“?+?item.getRssi());
????????????}
????????}

//????????CombineAlgorithm?ca?=?null;
//????????try?{
//????????????ca?=?new?CombineAlgorithm(a?3);
//????????}?catch?(Exception?e)?{
//????????????e.printStackTrace();
//????????}
//
//????????object[][]?c?=?ca.getResult();
//
//????????double[]?tempLocation?=?new?double[2];
//
//????????for?(int?i?=?0;?i?//
//????????????//?創建一個列表,用來對每個組合進行計算
//????????????List?tribases?=?new?ArrayList<>();
//
//????????????for?(int?j?=?0;?j?//????????????????IndoorDevice?bb?=?devices.get((int)?c[i][j]);
//????????????????tribases.add(bb);
//????????????}

????????????//?三個基站為一組通過距離加權后求出的坐標
????????????double[]?weightLocation?=?calculateCoordinate(devices);
????????????Logg.e(weightLocation);
????????????if?(weightLocation?==?null)?{
????????????????return?null;
????????????}
//????????????tempLocation[0]?+=?weightLocation[0];
//????????????tempLocation[1]?+=?weightLocation[1];
//????????}

????????location.setX(weightLocation[0]);
????????location.setY(weightLocation[1]);

//????????location.setX(weightLocation[0]?/?totalWeight);
//????????location.setY(weightLocation[1]?/?totalWeight);

????????//?設置定位結果的時間戳
????????location.setTimeStamp(System.currentTimeMillis());

????????return?location;
????}

????/**
?????*?求出通過該組基站距離加權后的坐標
?????*
?????*?@param?bases?接收到的一組基站對象列表(此處列表中的基站應當是id各異的)
?????*?@return?返回通過該組基站距離加權后的坐標
?????*/
????public?double[]?calculateCoordinate(List?bases)?{

評論

共有 條評論

相關資源