Appartenance d'un point dans une grille de points

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Diane MANZON
Messages : 49
Enregistré le : 18 Juin 2018, 08:31

Appartenance d'un point dans une grille de points

Messagepar Diane MANZON » 11 Fév 2019, 08:36

Bonjour à tous,

Ma problématique est la suivante:
Je définis mon espace de travail (grille de points). Je choisis un critère quelconque pour trouver un point (ici, le maximum). A partir de ce point, je vais créer des sous-matrices. Mais je voudrais être sûre que selon mon pas de variation (ici, i + scale), je suis toujours dans ma grille de points initiale.
Voici un code reproductible:

Code : Tout sélectionner

## Paramètres
r <- sqrt(2)
scale = 0.0707

## Création de la grille de points
Xg <- expand.grid(X1 = seq(-r,r,scale), X2=seq(-r,r,scale))
Xg <- as.matrix(Xg)
sphere <- sqrt(Xg[,1]^2+Xg[,2]^2)
Xg2 <- cbind(Xg, sphere)
Xg3 <- Xg2[Xg2[,3]<=r+0.001,]
X <- Xg3[,-3]
rm(Xg,Xg2,Xg3)

## Critère quelconque
D <- matrix(rnorm(1257), nrow=1257, ncol=1)

Des <- cbind(X, D)

## Critère le plus grand
which.max(Des[,3])
mx <- as.matrix(Des[Des[,3]==max(Des[,3]),])

## graphique 
matplot(X[,1], X[,2], pch=1)
matplot(mx[1,], mx[2,], pch=16, col="blue", add=TRUE)

try <- matrix(numeric(), nrow=10, ncol=2)

for (i in 1:nrow(try)) {
  try[i,1] <- mx[1,1]+i*scale
  try[i,2] <- mx[2,1]+i*scale
}


J'ai essayé d'utiliser la fonction match, mais chaque valeur est testée séparément, or je voudrais tester la ligne complète de try avec les lignes de X.
J'espère que je suis assez claire...

Quelqu'un aurait-il une idée ?
Je vous remercie par avance,

Bien cordialement,

Diane

François Bonnot
Messages : 481
Enregistré le : 10 Nov 2004, 15:19
Contact :

Re: Appartenance d'un point dans une grille de points

Messagepar François Bonnot » 11 Fév 2019, 13:54

Bonjour,
Ce que vous cherchez à faire n'est pas très clair... mais voici un code qui vous aidera peut-être:

Code : Tout sélectionner

r <- sqrt(2)+0.001
scale = 0.0707

u <- function(x) sqrt(x[1]^2+x[2]^2)

X <- expand.grid(X1 = seq(-r,r,scale), X2=seq(-r,r,scale))
X <- X[apply(X,1,u)<=r,]
X <- cbind(X,D=rnorm(nrow(X)))

z <- X[X$D==max(X$D),1:2]
plot(X[1:2],asp=1)
points(z,pch=16,col="blue")

z <- z+scale
try <- NULL
while(u(z)<r) {
    try <- rbind(try,z)
    z <- z+scale
}

points(try,pch=16,col="red")
François

Diane MANZON
Messages : 49
Enregistré le : 18 Juin 2018, 08:31

Re: Appartenance d'un point dans une grille de points

Messagepar Diane MANZON » 11 Fév 2019, 14:03

Bonjour François,

C'est exactement ça merci !!
J'étais parvenue à la même chose mais avec un code beaucoup plus compliqué!

Bonne journée,

Diane

Diane MANZON
Messages : 49
Enregistré le : 18 Juin 2018, 08:31

Re: Appartenance d'un point dans une grille de points

Messagepar Diane MANZON » 19 Fév 2019, 15:05

Bonjour à tous,

Je réactualise cette question parce que j'ai une nouvelle interrogation.

J'ai un tableau avec 2 colonnes (X1 et X2).
Chaque ligne représente un point dans mon plan.

Code : Tout sélectionner

r <- sqrt(2)+0.001
scale = 0.0707

u <- function(x) sqrt(x[1]^2+x[2]^2)

X <- expand.grid(X1 = seq(-r,r,scale), X2=seq(-r,r,scale))
X <- X[apply(X,1,u)<=r,]


Je génère par différentes méthodes, des tableaux avec des coordonnées de points.
Je voudrais savoir si ces points là appartiennent à mon premier tableau (X).

Je ne trouve pas de fonction qui prenne en compte une ligne du tableau (valeurs de X1 et de X2) et qui la compare avec les lignes du premier tableau.

J'ai regardé avec %in% et match mais ça compare les cases une par une :/

Comment puis-je faire ?

Merci par avance,

Cordialement,

Diane

Diane MANZON
Messages : 49
Enregistré le : 18 Juin 2018, 08:31

Re: Appartenance d'un point dans une grille de points

Messagepar Diane MANZON » 19 Fév 2019, 17:38

Diane MANZON a écrit :Bonjour à tous,

Je réactualise cette question parce que j'ai une nouvelle interrogation.


Trouvé !
Avec le package "prodlim" et la fonction row.match(x,y) !

Si ça peut aider !

Bonne soirée,

Diane


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité