Bonjour,
j'ai un tableau plein des valeurs (des angles). Voici le schéma d'algo à faire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
delta = 5 * PI / 180         
seuil_haut = -PI/4 + delta    
seuil_bas = -PI/4 - delta    
seuil = seuil_haut           

pour i = 1 jusqu'à i < (N-1)

   angle = ( angle(i, i-1) + angle(i+1,i) ) / 2    

   si angle <= seuil_bas            
       si seuil = seuil_haut
            pt inflexion
            seuil = seuil_bas
       fin si
Je veux obtenir en sortie un tableau contenant tous les "points d'inflexion".
J'ai réussi à faire la moitié du code qui permet en premier lieu de calculer tous les angles et d'obtenir en sortie un tableau des angles. Voici le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
i = function (matrix)
{
delta      = 5 * pi / 180       
seuil_haut = - pi/4 + delta      
seuil_bas  = - pi/4 - delta     
seuil      = seuil_haut 

library(dagR)    
n          = dim(matrix)[2]
l           = NULL
pt         = NULL
for(i in 2: (n-1))
{
          aa = paste("a",i,sep="")
          y  = assign(aa,matrix[1,i],pos=1)
         
          bb = paste("b",i,sep="")      
          x  = assign(bb,matrix[2,i],pos=1)
         
          cc = paste("c",i-1,sep="")
          yy  = assign(cc,matrix[1,i-1],pos=1)
         
          dd = paste("d",i-1,sep="")      
          xx = assign(dd,matrix[2,i-1],pos=1)
          
          ee = paste("e",i+1,sep="")
          yyy= assign(ee,matrix[1,i+1],pos=1)
         
          ff = paste("f",i+1,sep="")      
          xxx= assign(ff,matrix[2,i+1],pos=1)

l = c (l,assign (aa,(angle= angle (c(x,y) , c(xx,yy)) + angle (c(xxx,yyy),c(x,y)) /2)))
}
return(l)
}
Mais je suis bloqué dans la deuxième partie de mon schéma d'algo :
Code :
1
2
3
4
5
si angle <= seuil_bas           
       si seuil = seuil_haut
            pt inflexion
            seuil = seuil_bas
       fin si
Je veux obtenir en sortie un tableau contenant tous les "points d'inflexion". J'ai essayé avec ce code, mais ça marche pas
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
t=l
r=length(t)
for(i in 1:r)
{
     ee = paste("e",i,sep="")
     g  = assign(ee,t[i],pos=1)
 if(g >= seuil_haut)
      {
       if(seuil == seuil_bas)
          {
            seuil = seuil_haut
            kk= paste("k",i,sep="")
            pt = c(pt,assign(kk,g[i],pos=1))  
          }
      }
}
return(pt)
}
Bien sûr ici pas d’en-tête parce que ce dernier code n'est que la suite du premier.
Veuillez me posez vos questions si ce n'est pas clair.
Merci de m'aider ça fait des jours que je teste sans arriver à une solution