Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Aide pour un programme
Page 1 sur 1
Aide pour un programme
Bonjour à tous,
je viens de m'inscrire, parce que je cherche à faire un programme en vain sur R, et j'aimerais votre aide pour y aboutir. Je précise que j'ai commencé à travailler sur R hier.
Le contexte est le suivant: je pars d'un tableau excel (5000 lignes environ) dans lequel sont repérées des abscisses et ordonnées (réelles) variant de 0 à 511. Je voudrait obtenir une matrice dont chaque coefficient m(i,j) calcule le nombre de points à distance 1 ou moins du noeud (i,j) (j'ai fait un maillage d'une image et je veux affecter à un noeud une densité de population correspondante).
Ensuite, j'aimerais tracer une surface 3D (ou une carte de lignes de niveau par exemple) qui modélise celà (dont la côte est le coefficient m(i,j)).
Pour la matrice:
pos est le tableau des positions, il contient 4 colonnes et seules les deux dernières sont utilisées (abscisses et ordonnées).
Seulement celà n'a pas l'air de marcher, peut être que le paramètre c est mal placé, ou qu'il vaut toujours 0 parce que les matrices renvoyées (je teste avec des matrices plus petites) sont toutes nulles ... (alors que la première ligne de mon tableau donne les valeurs 43,7 et 4,3; donc le coefficient m(44,4) ne devrait pas être nul !)
Pour la surface je n'ai pas d'idée, ne sachant pas utiliser "outer" avec ma fonction distance + boucle for.
Je pense également qu'il risque d'y avoir un problème de quantité d'opérations (je remplis une matrice 500x500 et chaque coefficient est calculé après avoir testé 5000 distances), qu'en pensez vous ?
J'espère que vous pourrez m'aider, je suis vraiment débutant (et pas très bon en programmation, mais vous l'aurez compris)
je viens de m'inscrire, parce que je cherche à faire un programme en vain sur R, et j'aimerais votre aide pour y aboutir. Je précise que j'ai commencé à travailler sur R hier.
Le contexte est le suivant: je pars d'un tableau excel (5000 lignes environ) dans lequel sont repérées des abscisses et ordonnées (réelles) variant de 0 à 511. Je voudrait obtenir une matrice dont chaque coefficient m(i,j) calcule le nombre de points à distance 1 ou moins du noeud (i,j) (j'ai fait un maillage d'une image et je veux affecter à un noeud une densité de population correspondante).
Ensuite, j'aimerais tracer une surface 3D (ou une carte de lignes de niveau par exemple) qui modélise celà (dont la côte est le coefficient m(i,j)).
Pour la matrice:
pos est le tableau des positions, il contient 4 colonnes et seules les deux dernières sont utilisées (abscisses et ordonnées).
- Code:
## on implémente la fonction distance . Elle prend pour arguments 4 sclaires (2 couples)
distance=function(x1,x2,y1,y2)
{return(sqrt((y1-x1)**2+(y2-x2)**2))}
## Fonction auxiliaire qui calculera le coefficient de la matrice des passages proches. Elle prend pour argument quatres positions.
kernel=function(x1,x2,y1,y2)
{c=0
if(distance(x1,x2,y1,y2)<=1){c=1}
else{c=0}
return (c)}
##Consruction de la matrice souhaitée
matrice=function(t)
{M=matrix(rep(0,512),ncol=512, nrow=512)
for (i in 1:512)
{for (j in 1:512)
{c=0
for (p in 1: length(t[,1]))
{c=c+kernel(i,j,t[p,3],t[p,4])
M[i,j]=c}}}
return (M)}
Seulement celà n'a pas l'air de marcher, peut être que le paramètre c est mal placé, ou qu'il vaut toujours 0 parce que les matrices renvoyées (je teste avec des matrices plus petites) sont toutes nulles ... (alors que la première ligne de mon tableau donne les valeurs 43,7 et 4,3; donc le coefficient m(44,4) ne devrait pas être nul !)
Pour la surface je n'ai pas d'idée, ne sachant pas utiliser "outer" avec ma fonction distance + boucle for.
Je pense également qu'il risque d'y avoir un problème de quantité d'opérations (je remplis une matrice 500x500 et chaque coefficient est calculé après avoir testé 5000 distances), qu'en pensez vous ?
J'espère que vous pourrez m'aider, je suis vraiment débutant (et pas très bon en programmation, mais vous l'aurez compris)
LiliOp- Nombre de messages : 3
Date d'inscription : 24/01/2014
Re: Aide pour un programme
Personne pour m'aider ?
LiliOp- Nombre de messages : 3
Date d'inscription : 24/01/2014
Re: Aide pour un programme
S'il vous plait, est-ce que vous sauriez comment je peux m'en sortir ? :/
J'ai modifié quelques lignes, maintenant la fonction permet bien de compter les populations, mais il me manque encore deux choses:
- comment créer un graphique 3D ou du type "volcano" (je ne sais pas quel est le type de données que lit volcano, ce n'est peut ê^tre pas une matrice ...), en supposant que l'on ait bien la matrice voulue.
-si possible, comment réduire le temps de calcul de cette matrice. Il est pour l'instant monstrueusement long ! j'ai compté 15 secondes pour remplir une matrice 50x50 avec un tableau de 50 lignes, donc il me faudrait presque 41 heures pour calculer ma matrice entière !
Je vais commencer par choisir une résolution moindre, par exemple 32 divisions (au lieu de 512), comme ça j'ai à remplir une matrice 32x32, et j'estime mon temps à une trentaine de minutes.
J'espère que vous pourrez m'aider
J'ai modifié quelques lignes, maintenant la fonction permet bien de compter les populations, mais il me manque encore deux choses:
- comment créer un graphique 3D ou du type "volcano" (je ne sais pas quel est le type de données que lit volcano, ce n'est peut ê^tre pas une matrice ...), en supposant que l'on ait bien la matrice voulue.
-si possible, comment réduire le temps de calcul de cette matrice. Il est pour l'instant monstrueusement long ! j'ai compté 15 secondes pour remplir une matrice 50x50 avec un tableau de 50 lignes, donc il me faudrait presque 41 heures pour calculer ma matrice entière !
Je vais commencer par choisir une résolution moindre, par exemple 32 divisions (au lieu de 512), comme ça j'ai à remplir une matrice 32x32, et j'estime mon temps à une trentaine de minutes.
J'espère que vous pourrez m'aider
LiliOp- Nombre de messages : 3
Date d'inscription : 24/01/2014
Sujets similaires
» Aide pour ma thèse
» Aide pour ACP
» besoin d'aide pour un chi-2
» aide pour mon mémoire
» aide pour une anova..
» Aide pour ACP
» besoin d'aide pour un chi-2
» aide pour mon mémoire
» aide pour une anova..
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|