merge du fichier k_proches_voisins.cpp
This commit is contained in:
commit
9a022e67fe
1 changed files with 75 additions and 53 deletions
|
@ -17,8 +17,21 @@ double distance(math::csignal v1, math::csignal v2, int n){
|
||||||
return std::pow(d, 1/n);
|
return std::pow(d, 1/n);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int argmax(vector<int> v){
|
||||||
|
int arg = 0;
|
||||||
|
int max = v[0];
|
||||||
|
int n = v.size();
|
||||||
|
for(int i = 1; i < n ; ++i){
|
||||||
|
if (v[i]>max){
|
||||||
|
arg = i;
|
||||||
|
max = v[i];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return arg
|
||||||
|
};
|
||||||
|
|
||||||
int main(math::csignal new_vect, map< math::csignal, std::string > dico, int k){
|
int main(math::csignal new_vect, map< math::csignal, std::string > dico, int k){
|
||||||
std::vector< std::pair<double , math::csignal> > k_min;
|
std::vector<std::pair<double, math::csignal>> k_min;
|
||||||
std::map<math::csignal, std::string> dico;
|
std::map<math::csignal, std::string> dico;
|
||||||
double d;
|
double d;
|
||||||
int avance = 0;
|
int avance = 0;
|
||||||
|
@ -26,39 +39,48 @@ int main(math::csignal new_vect, map< math::csignal, std::string > dico, int k){
|
||||||
int droite = 0;
|
int droite = 0;
|
||||||
int gauche = 0;
|
int gauche = 0;
|
||||||
int rejet = 0;
|
int rejet = 0;
|
||||||
vector<int> choix;
|
vector<int> vchoix;
|
||||||
for(auto& ref_vect : dico){
|
for(auto& ref_vect : dico){
|
||||||
d = distance(new_vect, ref_vect.first );
|
d = distance(new_vect, ref_vect.first );
|
||||||
if (k_min.size() < k ){
|
if (k_min.size() < k ){
|
||||||
k_min.push_back({d, ref_vect.first});
|
k_min.push_back({d, ref_vect.first});
|
||||||
sort(k_min.begin(), k_min.end());
|
|
||||||
} else if (d < k_min[k-1].first){
|
} else if (d < k_min[k-1].first){
|
||||||
k_min.push_back({d, ref_vect.first});
|
k_min.push_back({d, ref_vect.first});
|
||||||
sort(k_min.begin(), k_min.end());
|
sort(k_min.begin(), k_min.end());
|
||||||
k_min.pop_back();
|
k_min.pop_back();
|
||||||
};
|
}
|
||||||
|
|
||||||
} ;
|
}
|
||||||
for(auto i = k_min.begin(); i != k_min.end(); i++) {
|
for(auto i = k_min.begin(); i != k_min.end(); i++) {
|
||||||
if (dico[k_min[i].second].second == "avance"){
|
if (dico[k_min[i].second].second == "avance"){
|
||||||
avance = avance + 1
|
avance = avance + 1
|
||||||
} else if (dico[k_min[i].second] == "arret"){
|
} else if (dico[k_min[i].second].second == "arret"){
|
||||||
arret = arret + 1
|
arret = arret + 1
|
||||||
} else if (dico[k_min[i].second] == "droite"){
|
} else if (dico[k_min[i].second].second == "droite"){
|
||||||
arret = droite + 1
|
arret = droite + 1
|
||||||
} else if (dico[k_min[i].second] == "gauche"){
|
} else if (dico[k_min[i].second].second == "gauche"){
|
||||||
arret = gauche + 1
|
arret = gauche + 1
|
||||||
} else if (dico[k_min[i].second] == "rejet"){
|
} else if (dico[k_min[i].second].second == "rejet"){
|
||||||
arret = rejet + 1
|
arret = rejet + 1
|
||||||
} ;
|
}
|
||||||
|
}
|
||||||
|
vchoix.push_back(avance);
|
||||||
|
vchoix.push_back(arret);
|
||||||
|
vchoix.push_back(droite);
|
||||||
|
vchoix.push_back(gauche);
|
||||||
|
vchoix.push_back(rejet);
|
||||||
|
|
||||||
choix.push_back(avance);
|
int nchoix = argmax(vchoix);
|
||||||
choix.push_back(arret);
|
string choix ;
|
||||||
choix.push_back(droite);
|
if (nchoix == 0){
|
||||||
choix.push_back(gauche);
|
choix = "avance"
|
||||||
choix.push_back(rejet);
|
} else if (nchoix == 1){
|
||||||
|
choix = "arret"
|
||||||
|
} else if (nchoix == 2){
|
||||||
|
choix = "droite"
|
||||||
};
|
} else if (nchoix == 3){
|
||||||
|
choix = "gauche"
|
||||||
|
} else if (nchoix == 4){
|
||||||
|
choix = "rejet"
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue