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