当前位置: 首页>>代码示例>>C++>>正文


C++ Gesture::add方法代码示例

本文整理汇总了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);

}
开发者ID:valdar,项目名称:wiigesture,代码行数:86,代码来源:quantizer2.cpp


注:本文中的Gesture::add方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。