Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > R
R Forum d'entraide sur la programmation en langage R
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/12/2012, 10h35   #1
orland
Nouveau Membre du Club
 
Homme
Enseignant Chercheur
Inscription : septembre 2012
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 106
Points : 29
Points : 29
Par défaut Aide pour un code

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
orland est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h45.


 
 
 
 
Partenaires

Hébergement Web