Bonjour
soit un boost::numeric::ublas ::vector vTerm (4)
1 2.1 2.2 3 4
où les nombres ci-dessus sont des intervalles de temps par exemple
et une fréquence m = 2
Je voudrais obtenir le vector suivant vTemp:
0.1 0.2 0.5 1 1.1 1.2 1.5 2 2.1 2.2 2.5 3 3.5 4
Comment je l'obtiens?
Voila ce que je voudrais faire
JE prends le premier terme de vTerm càd 1
Comme j'ai une fréquence de 2
le 1 tombera en 0.5 et en 1
Ensuite je prends le second terme (càd 2.1)
j'aurais (tjs avec ma fréquence de 2) : 0.1 0.6 1.1 1.6 2.1
Pour le suivant 2.2 -> 0.2 0.7 1.2 1.7 2.2
Pour le suivant 3 -> 0.5 1 1.5 2 2.5 3
Pour le dernier 4 -> 0.5 1 1.5 2 2.5 3 3.5 4
Ensuite je remets tout ensemble dans un vector
0.5 1 0.1 0.6 1.1 1.6 2.1 0.2 0.7 1.2 1.7 2.2 0.5 1 1.5 2 2.5 3 0.5 1 1.5 2 2.5 3 3.5 4
Je trie, je supprime les doublons et j'obtiens
0.1 0.2 0.5 1 1.1 1.2 1.5 2 2.1 2.2 2.5 3 3.5 4
Bon en théorie c'est bien joli, mais j'ai un peu du mal en pratique
Voila ce que j'ai fait
Forcément ca ne fonctionne pas mais je vois vraiment pas où et j'ai surtout l'impression de me compliquer la vie...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 bu::vector<Term> vTemp(vTerm.size()); // JE sais pas quoi donner comme taille => je donne par défaut celle la...??? for (unsigned i = 0; i< vTerm.size(); i++) { for (Term k = vTerm(i) ; k>0; k-= 1.0/m) { *(vTemp.begin()) = k; vTemp.resize(vTemp.size()+1, true); ///ICI J'ai l'impression que ca foire... } } std::sort (vTemp.begin(), vTemp.end()); // Tri du vector vTemp bu::vector<Term>::iterator it = std::unique( vTemp.begin(), vTemp.end()); // suppression des doublons dans l'intervalle begin() -> it() bu::vector<Term> vTemp2(vTemp.size()); std::copy(vTemp.begin(), it, vTemp2.begin()); for (unsigned compt= 0; (vTemp(compt)< vTemp(compt-1)) && (compt < vTemp2.size()); compt++){} vTemp2.resize(compt, true); vTemp.resize(vTemp2.size(), false); std::copy(vTemp2.begin(), vTemp2.end(), vTemp.begin());
Si qqun voit, j'accepte avec grand plaisir sa contribution.. ;-)
Partager