本文整理汇总了C++中Gesture::add方法的典型用法代码示例。如果您正苦于以下问题:C++ Gesture::add方法的具体用法?C++ Gesture::add怎么用?C++ Gesture::add使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Gesture
的用法示例。
在下文中一共展示了Gesture::add方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: distance
void Quantizer2::train(std::vector<Gesture> gestures, int considered_gestures){
//metagesture: contiene tutte le componenti di tutte le gesture.
Gesture gesture;
//costruzione della metagesture
int gesture_number;
if(considered_gestures<gestures.size()){
gesture_number = considered_gestures;
}else{
gesture_number = gestures.size();
}
for(int k=0; k<gesture_number; k++){
std::vector<Sample_3d> curGesturData = gestures.at(k).getData();
for(int w=0; w<curGesturData.size(); w++){
gesture.add( curGesturData.at(w) );
}
}
this->init(gesture);
std::vector<Sample_3d> data = gesture.getData();
int size = data.size();
// associazioni (componente della gesture) <-> centroide
int* assoc = new int[size];
for(int i=0; i<size; i++)
assoc[i] = -1;
// n° vettori associati a ciascun centroide
// contando il centroide stesso! (infatti si inizializza a 1)
int numVectPerCentroid[n_centroids];
for(int i=0; i<n_centroids; i++ )
numVectPerCentroid[i] = 1;
bool modified;
int n_iter = 0;
do{
// determina centroide a distanza minima per ogni vettore
modified = false;
for(int i=0; i<size; i++){
// minima distanza finora riscontrata
double min_dist = std::numeric_limits<double>::max();
// centroide a minima distanza
int centroid_count = -1;
for(int j=0; j<n_centroids; j++){
// calcola la distanza dell'elemento dal centroide corrente
double d = distance(data.at(i), centroids[j]);
// se la nuova distanza è minore della minima finora riscontrata,
// aggiorna il centroide più vicino
if(d < min_dist){
min_dist = d;
centroid_count = j;
}
}//j
// associa il sample al centroide più vicino
if(assoc[i] != centroid_count){
assoc[i] = centroid_count;
modified = true;
}
}//i
// ricalcola posizione dei centroidi
for(int i=0; i<size; i++){
numVectPerCentroid[assoc[i]]++;
centroids[assoc[i]] += data.at(i);
}
for(int j=0; j<n_centroids; j++)
centroids[j] /= numVectPerCentroid[j];
n_iter++;
}
while(modified && n_iter < 100);
}