IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Création d'une boucle pour récupérer des informations [Débutant]


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 8
    Points
    8
    Par défaut Création d'une boucle pour récupérer des informations
    Bonjour,

    Je dois récupèrer des informations sur des profils sous Matlab, mais je dois le faire pour un grand nombre de profil, j'aimerai savoir comment crée une boucle sur Matlab pour lui faire répéter plusieurs cet manipulation:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    moyenne = mean(Z1e0Altitude0x2Dc1)
    P1=(Z1e0Altitude0x2Dc1-moyenne)
    Rp = max(P1)
    Rp = min(P1)
    N= size(Z1e0Altitude0x2Dc1)
    Ra = (1/N(1))*sum(abs(P1))
    Rc = mean(P1)
    Rq = sqrt((1/N(1))*sum(P1.^2))
    Rsk =1/(N(1)*Rq^3)*sum(P1.^3)
    Rku =1/(N(1)*Rq^4)*sum(P1.^4)
    ps:"Z1e0Altitude0x2Dc1" est le nom du fichier que j'ai importé sur Matlab et qui contient mes coordonnées de points; les suivant sont du type: "Z1e0Altitude0x2Dc2" , "Z1e0Altitude0x2Dc3" ...

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Il y a plusieurs sujets sur ce forum, exerces-toi en utilisant la fonction :rechercher: et tu as aussi la

    Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    for i=1:maximum
       var = sprintf('Z1e0Altitude0x2Dc%d', i)
     
       moyenne = mean(var)
       P1=(var-moyenne)
       Rp = max(P1)
       Rp = min(P1)
       N= size(Z1e0Altitude0x2Dc1)
       Ra = (1/N(1))*sum(abs(P1))
       Rc = mean(P1)
       Rq = sqrt((1/N(1))*sum(P1.^2))
       Rsk =1/(N(1)*Rq^3)*sum(P1.^3)
       Rku =1/(N(1)*Rq^4)*sum(P1.^4)
    end
    Cela dépend de la variable Z1e0Altitude0x2Dc1, et son type !!
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Merci de ta réponse,

    Mes variables Z1e0Altitude0x2Dc contiennent des altitudes de points stockées dans un tableau à une seule colonne.

    La boucle fonctionne cependant je n'obtiens plus les mêmes valeurs qu'auparavant ?!?

  4. #4
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Tu peux poster ce que tu obtiens, pour essayer de comprendre ?
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  5. #5
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Ce qui serait intéressant serait de savoir comment tu obtiens tes variables Z1e0Altitude0x2Dc, car au lieu de les appeler Z1e0Altitude0x2Dc1, Z1e0Altitude0x2Dc2..il serait mieux de les stocker dans un tableau de cellules.

    Le code de kmaniche ne peut pas fonctionner car :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       var = sprintf('Z1e0Altitude0x2Dc%d', i)
     
       moyenne = mean(var)
    fait la moyenne de la chaine de caractères 'Z1e0Altitude0x2Dc1' (ç ne gêne pas MATLAB il convertit ça en double) et non pas du contenu de la variable.
    Règles du Forum

    Adepte de la maïeutique

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Ah d'accord, je cherchais d'ou pouvais venir le problème mais je ne trouvais pas.. Mes variables sont des fichiers textes comportant des altitudes de points ci-joint. Pourquoi créer un tableau de cellules?
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Parce qu'il sera alors facile de boucler dessus.
    Comment créer des variables nommées A1, A2, A3, ...,AN ?
    Règles du Forum

    Adepte de la maïeutique

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Ok, mais ici les variables non pas tous la même dimension certains fichiers contiennent plus de points que d'autres.

  9. #9
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Oui et ?

    Citation Envoyé par la faq
    Si les variables sont de type et/ou de dimension différents, il faut utiliser un tableau de cellules.
    Règles du Forum

    Adepte de la maïeutique

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Oupss dsl j'avais pas tout lu

    C'est bon,j'ai crée un tableau de cellule, que voici, comment l'utiliser dans la boucle maintenant?
    Il suffira de remplacer var = sprintf('Z1e0Altitude0x2Dc%d', i) par C{i} ?
    Je vais essayer et voir se que sa donne!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    C = {Z1e0Altitude0x2Dc5 Z1e0Altitude0x2Dc6 Z1e0Altitude0x2Dc7 Z1e0Altitude0x2Dc8 Z1e0Altitude0x2Dc9 Z1e0Altitude0x2Dc10 }
     
    C = 
     
      Columns 1 through 4
     
        [7533x1 double]    [7597x1 double]    [7597x1 double]    [7597x1 double]
     
      Columns 5 through 6
     
        [7597x1 double]    [7597x1 double]

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Yesss!!! Sa marche cet fois, merci beaucoup de votre aide, trés éfficace votre méthode Maïeutique ^^

    Voici le code que j'ai utilisé au final, au cas ou sa pourrais aidé des personne de passage sur la discussion ;-)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    >> C = {Z1e0Altitude0x2Dc1 Z1e0Altitude0x2Dc2 Z1e0Altitude0x2Dc3};
    >> for i=1:3
    var = sprintf('Z1e0Altitude0x2Dc%d', i)
    P1=C{i}-mean(C{i});
    Rp=max(P1)
    Rv=min(P1)
    Rc = mean(P1)
    N=size(C{i})
    Ra=(1/N(1))*sum(abs(P1))
    Rq = sqrt((1/N(1))*sum(P1.^2))
    Rsk =1/(N(1)*Rq^3)*sum(P1.^3)
    Rku =1/(N(1)*Rq^4)*sum(P1.^4)
    end
    "var = sprintf('Z1e0Altitude0x2Dc%d', i)" me permet juste de savoir à quel variable corresponde les résultat à chaque fois.

    Dernier question, j'ai remarqué qu'on ne peux plus modifier la ligne écrite dans la boucle une fois qu'on clique sur entrée, il y a un moyen d'y revenir pour la modifier?

    Encore une fois merci de l'aide précieuse apporté dans votre Forum.

  12. #12
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Citation Envoyé par youcef60 Voir le message
    Dernier question, j'ai remarqué qu'on ne peux plus modifier la ligne écrite dans la boucle une fois qu'on clique sur entrée, il y a un moyen d'y revenir pour la modifier?
    Le mieux serait d'écrire ton code dans un script ou une fonction.
    Règles du Forum

    Adepte de la maïeutique

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Ok, je vais m'y prendre de cette façon, sur ce Bonne soirée

    Oups par contre Matlab à l'air d'etre limité en dimension de matrice, j'ai ce message d'erreur lorsque j'en ais mit plus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ??? Index exceeds matrix dimensions.

  14. #14
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    Le code de kmaniche ne peut pas fonctionner car :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       var = sprintf('Z1e0Altitude0x2Dc%d', i)
     
       moyenne = mean(var)
    fait la moyenne de la chaine de caractères 'Z1e0Altitude0x2Dc1' (ç ne gêne pas MATLAB il convertit ça en double) et non pas du contenu de la variable.
    C'est pour cela que j'ai laissé une ligne vide après, et j'ai bien fais remarqué :
    Cela dépend de la variable Z1e0Altitude0x2Dc1, et son type !!
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  15. #15
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Citation Envoyé par youcef60 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ??? Index exceeds matrix dimensions.
    Cela signifie que tu cherche à accéder à un indice du tableau qui n'existe pas. Je prends pour l'exemple un tableau de 30 éléments, si tu fais "k=v(30)" ça marche, mais si tu cherches à accéder à la case 31, tu ne pourra pas !!
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Oui en effet, c'est bien ça.

    En faite je ne faisait pas attention (la fatigue sans doute) et pour ma boucle je demandais de faire varier i de 4 à 15 , en faisant référence aux numéro des fichier et non au tableau de cellule que j'avais crée.. Merci!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 30
    Dernier message: 26/08/2014, 16h39
  2. Script SNMP pour récupérer des information de la MIB
    Par patchiko dans le forum Développement
    Réponses: 4
    Dernier message: 23/05/2011, 18h31
  3. [MySQL] je cherche une aide pour récupérer des champs d'une base de donnée
    Par maya24 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/09/2007, 12h14
  4. Réponses: 21
    Dernier message: 23/05/2007, 16h16
  5. création d'une requette pour inscrire des données
    Par jeanjean555 dans le forum Access
    Réponses: 9
    Dernier message: 04/02/2007, 19h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo