Нахождение координат x и y с помощью алгоритма взвешенного K-ближайшего соседства - PullRequest
0 голосов
/ 20 января 2019

Я работаю над проектом Indoor Positioning с использованием WiFi, я хочу использовать WKNN в качестве алгоритма. Я нашел похожий проект от GitHub . Это часть класса Algorithm:

/**
 * Calculates the Weighted Average of the K locations that have the shortest
 * distances D
 * 
 * @param LocDistance_Results_List
 *            Locations-Distances pairs sorted by distance
 * @param K
 *            The number of locations used
 * @return The estimated user location, or null for error
 */
private static String calculateWeightedAverageKDistanceLocations(ArrayList<LocDistance> LocDistance_Results_List, int K) {
    double LocationWeight = 0.0f;
    double sumWeights = 0.0f;
    double WeightedSumX = 0.0f;
    double WeightedSumY = 0.0f;

    String[] LocationArray = new String[2];
    float x, y;

    int K_Min = K < LocDistance_Results_List.size() ? K : LocDistance_Results_List.size();

    // Calculate the weighted sum of X and Y
    for (int i = 0; i < K_Min; ++i) {
        if (LocDistance_Results_List.get(i).getDistance() != 0.0) {
            LocationWeight = 1 / LocDistance_Results_List.get(i).getDistance();
        } else {
            LocationWeight = 100;
        }
        LocationArray = LocDistance_Results_List.get(i).getLocation().split(" ");

        try {
            x = Float.valueOf(LocationArray[0].trim()).floatValue();
            y = Float.valueOf(LocationArray[1].trim()).floatValue();
        } catch (Exception e) {
            return null;
        }

        sumWeights += LocationWeight;
        WeightedSumX += LocationWeight * x;
        WeightedSumY += LocationWeight * y;

    }

    WeightedSumX /= sumWeights;
    WeightedSumY /= sumWeights;

    return WeightedSumX + " " + WeightedSumY;
}

Мой вопрос заключается в том, можем ли мы на самом деле найти координаты x и y из алгоритма или я должен был сделать другой путь, такой как трилатерация, чтобы найти координаты? Или есть какая-нибудь хорошая статья или пример, который я могу использовать?

...