Condenser une liste de valeurs (x points) en une liste plus courte (y points)

0

Bonjour,


voici ma demande : j'ai une colonne A contenant des nombres allant de 1 à 50. Elles correspondent à un maillage (discrétisation) issu d'un code de calcul. En colonne B les valeurs associées (variables) à chacune de ces mailles. J'aimerais maintenant les condenser sur un nombre réduit de mailles (30 au total). Y a t'il une fonction pour cela ? (c'est faisable à la main mais un peu chiant surtout si on veut changer la taille du maillage)

ps : pour un maillage donnée, les mailles font toutes la même dimension.

Exemple : la maille 1 du nouveau maillage (qui en contient 30) va correspondre à la maille 1 de l'ancien maillage + 1 morceau de la maille 2.


Merci d'avance.

    Posté le 12 juillet 2017, 10:06
    par Bary
    Répondre
    0

    Bonjour,

    Peux tu nous communiquer un exemple concret de ta demande car ainsi ce n'est pas très clair pour qui n'est pas dans le contexte de ton problème.

    Le mieux est de nous transmettre ton fichier par l’intermédiaire du site

    http://www.cjoint.com/

    et tu nous montres à quoi tu veux arriver.

    A+

    Chris

    CHRIS Posté le 12 juillet 2017, 10:26
    par CHRIS
    0

    Re bonjour,


    en effet ce sera plus simple avec un exemple.


    Dans celui que je fournis, je pars d'un maillage de référence de 50 mailles (c'est la discrétisation d'un objet en fonction de sa hauteur). Chaque maille a une valeur associée. J'aimerais avoir les valeurs dans un autre maillage. J'ai proposé pour exemple un maillage numéro 2 de 25 mailles. Pas de grosse difficulté sur ce maillage, il est deux fois moins fin que le précédent : la maille 1 correspondra à la moyenne des mailles 1 & 2 du maillage précédent, la maille 2 aux mailles 3&4 et ainsi de suite.


    Mais comment faire de manière rapide quand on passe d'un maillage à un autre, dont les nombres de mailles ne sont pas des multiples (par exemple un maillage initial de 92 points que je veux condenser en un maillage de 37 mailles ...)


    http://www.cjoint.com/c/GGmjsxWfQ6j

    Posté le 12 juillet 2017, 11:22
    par Bary
    0

    Bonjour,

    si j'ai bien compris entre le maillage 1 et le maillage 2. c'est une réduction du nombre des mailles du maillage 1 en faisant la moyenne de 2 mailles consécutif.

    donc logiquement le maillage 3 serait une réduction du maillage 2.

    Par contre que fais tu de la dernière valeur sur le deuxième maillage puisque celui-ci est impair ?

    Tom Posté le 12 juillet 2017, 11:34
    par Tom
    0

    Bonjour,


    non le maillage 3 n'est pas forcément une réduction du 2.

    J'ai fait une moyenne de deux cellules adjacentes car le passage de 50 à 25 est une division par 2 du nombre de mailles. Mais ce n'était qu'un exemple. le fond de mon problème est : si je pars d'un maillage qui fait X mailles (X étant pair ou impair) et que je veux atterrir sur un maillage qui en fait Y (pair ou impair, indépendamment de X), comment puis je calculer la valeur associée à chacune des mailles du second maillage si je connais les valeurs de chacune des mailles du premier maillage ?

    Posté le 12 juillet 2017, 11:44
    par Bary
    0

    Re Barry,

    Je t'ai mis une formule pour par exemple faire la moyenne de 2 valeurs adjacentes :

    =MOYENNE((DECALER($C3;(LIGNE()-3);;2;))) le 2 en gras correspond au nombre de cellule que tu veux faire comme moyenne, une moyenne toutes les 2 lignes.

    donc en fonction de la réduction que tu veux faire tu modifies le chiffre.

    voici le document avec la formule : http://www.cjoint.com/c/GGmjVNSfWYF

    Dis moi si c'est cela que tu voulais, sinon je recherche autres choses

    Cordialement,

    Tom

    Tom Posté le 12 juillet 2017, 11:53
    par Tom
    • je suis entrain de peaufiner la formule, il y a une coquille – Tom 12 juillet 2017, 12:31
    0

    voici ma dernière version :

    =MOYENNE((DECALER($C$4;10*(LIGNE()-4);;10;))) En gras les deux variable à modifier pour faire la réduction

    http://www.cjoint.com/c/GGmk6KcdtCF

    Sur le maillage 3 je t'ai fait un truc simplifier ou tu mets juste le type de réduction et la suite se fait.

    Cordialement,

    Tom

    Tom Posté le 12 juillet 2017, 12:58
    par Tom
    0

    Re bonjour,


    je te remercie pour ton aide mais malheureusement ce n'est pas cela que je recherche. Je souhaitais une formule qui me permette d'obtenir les valeurs associés à un maillage dont la taille est variable (le Y dont je parlais). Comme elle est variable, la moyenne à fournir par maille ne se calcule pas forcément avec des mailles entières du maillage de référence.

    Je ne sais pas comment expliquer plus clairement.


    Peut-etre par une "image" : tu as un baton de 1 mètre, recouvert de chenilles alignées qui sont toutes de même taille. 100 chenilles au total. Si je discrétise mon baton en 100 mailles, chaque maille contient une chenille. Si je le discrétise en 50 mailles, chacune contient deux chenilles. Mais si je discrétise en 30 mailles, chacune contient 10/3 de chenilles.

    Dans mon cas à moi, le problème est que les mailles du maillage de base (les 100 mailles d'une chenille dans l'exemple) contiennent un nombre de chenilles différents (j'en ai par exemple 3 dans la maille 1, 4 dans la maille 2, 0 dans la maille 3, etc.) : je ne peux donc pas appliquer le 10/3 si je veux discrétiser en 30 mailles.

    Posté le 12 juillet 2017, 13:53
    par Bary
    0
    Peux tu m'envoyer un exemple de ton cas si le nombre de "chenille" (dans ton premier tableau = valeur ?)  n'est pas proportionnel dans chaque mailles
    Disons pour simplifier que tu pars avec un nombre base de maille qui est de 10

    Peux tu me faire le résultat d'un maillage à 3 mailles.

    je veux voir comment tu condenses tes valeurs.

    Parce que si j'ai bien compris parfois une valeur dans une maille de base pourrait être réparti à la fois dans la maille 1 et à la fois dans la maille 2 du 2ème maillage ( il y a t'il un % de répartition ?)
    Et c'est la que tout ce complique si c'est cela.

    Cordialement,
    Tom


    Tom Posté le 12 juillet 2017, 14:28
    par Tom
    0

    Voilà un exemple de passage de 10 mailles à 3 mailles.

    http://www.cjoint.com/c/GGmmVgquUHk

    Posté le 12 juillet 2017, 14:47
    par Bary
    0

    ok je comprend mieux, je regarde sur la faisabilité de la chose

    Tom Posté le 12 juillet 2017, 15:39
    par Tom
    0

    Re Bary,

    J'ai fait peut etre quelques choses de complexe mais dis moi si ça fonctionne en mettant un maillage que tu as déjà fait  pour vérifier que tu as les même résultat.

    et dis moi si c'est ça que tu voulais

    http://www.cjoint.com/c/GGmqodbOyBF


    Autrement je ne sais pas comment faire.

    Cordialement,

    Tom
    Tom Posté le 12 juillet 2017, 18:16
    par Tom
    0

    Bonjour Tom,


    merci beaucoup pour le temps passé sur mon cas. Ce n'est pas tout-à-fait abouti car si je tente de modifier le nombre de mailles, le nombre de valeurs que j'obtiens est un peu décalé (par exemple si je mets 12 mailles, il me renvoie 13 valeurs, si je mets 15 mailles il me renvoie 17 valeurs, mais si je mets 4 mailles il renvoie 4 valeurs...).


    Néanmoins, et c'est là l'essentiel, je crois que j'ai compris comment tu as procédé et je pense que je vais pouvoir, via quelques modifications, compléter de manière à arriver à l'attendu !


    Encore une fois, merci beaucoup pour ton aide ! :-)


    Bary

    Posté le 13 juillet 2017, 08:17
    par Bary
    0

    Je suis désolé Barry, c'est assez complexe car il faut prendre en compte quand c'est des nombres entiers, quand le nombre de maille est impair et quand le nombre est à virgules.

    Je pense que ma formule fonctionne bien pour des nombres à virgule, mais gère mal les nombres entiers

    si tu veux je t'envoie mon draft avec la décomposition des formules dans la formule complète pour que tu les tests.

    http://www.cjoint.com/c/GGnih6UWgEF

    n'hésite pas revenir pour t'aider à compléter des formules

    Cordialement,

    Tom
    Tom Posté le 13 juillet 2017, 10:09
    par Tom

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :