1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : janvier 2013
    Messages : 38
    Points : 0
    Points
    0

    Par défaut indexation par une fonction

    Bonjour à tous,
    Je cherche à indexer des valeurs d'une matrice M [1,n] par une fonction.
    CAD, créer une nouvelle matrice où seront stockées les valeurs à partir de la 10 lignes toutes les 8 lignes jusqu'à la dernière afin de pouvoir la visualiser sur un graphe.
    Merci par avance pour votre aide

  2. #2
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    juin 2003
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2003
    Messages : 756
    Points : 1 145
    Points
    1 145

    Par défaut

    Je pense que tu peux t'en sortir avec la fonction reshape
    Tu commences par enlever les 10 premières lignes, tu transformes ta matrice [1,n] en matrice [8, n/8] et tu gardes la première ligne seulement.
    Matlab 7.9.1.705 R2009b SP1 | W7
    Pas de question technique par MP, Merci

  3. #3
    Modérateur

    Inscrit en
    août 2007
    Messages
    4 558
    Détails du profil
    Informations forums :
    Inscription : août 2007
    Messages : 4 558
    Points : 6 499
    Points
    6 499

    Par défaut

    Bonjour,

    Citation Envoyé par hilibili Voir le message
    Je cherche à indexer des valeurs d'une matrice M [1,n] par une fonction.
    C'est bien une matrice n lignes et une colonne? en général avec matlab, le premier nombre donne le nombre de lignes et le deuxième le nombre de colonnes, comme tu as inversé je préfère demander.

    Si c'est bien cela :
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  4. #4
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    juin 2003
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2003
    Messages : 756
    Points : 1 145
    Points
    1 145

    Par défaut

    Pourquoi faire simple quand je trouve une solution compliquée
    Matlab 7.9.1.705 R2009b SP1 | W7
    Pas de question technique par MP, Merci

  5. #5
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : janvier 2013
    Messages : 38
    Points : 0
    Points
    0

    Par défaut

    Citation Envoyé par magelan Voir le message
    Bonjour,


    C'est bien une matrice n lignes et une colonne? en général avec matlab, le premier nombre donne le nombre de lignes et le deuxième le nombre de colonnes, comme tu as inversé je préfère demander.

    Si c'est bien cela :
    Bonjour,
    Merci pour toute vos réponses.
    Puis-je remplacer le chiffre 8 par une formule ? J'entend par la quelque chose de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i=1: x
    M2=M(10 : (8*i/45):end) ;
    Merci beaucoup !

  6. #6
    Modérateur

    Inscrit en
    août 2007
    Messages
    4 558
    Détails du profil
    Informations forums :
    Inscription : août 2007
    Messages : 4 558
    Points : 6 499
    Points
    6 499

    Par défaut

    Bien sur, il suffit de tester mais cela devrait marcher.

    Petite remarque : telle que tu l'as écrit, M2 est écrasé à chaque itération.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : janvier 2013
    Messages : 38
    Points : 0
    Points
    0

    Par défaut

    Citation Envoyé par magelan Voir le message
    M2 est écrasé à chaque itération.
    Comment éviter ce phénomène svp ?

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2007
    Messages : 640
    Points : 748
    Points
    748

    Par défaut

    Il suffit pour cela d'utiliser un indice pour le stockage des infos de M2.

    L'idée étant la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i=1: x
    M2(u)=M(10 : (8*i/45):end) ;
    end
    Avec u l'indice qui va bien ;-) Tu devrais avoir toutes les infos nécessaire pour avancer.
    Un dernier truc : pense à la préallocation si tu connais la taille de M2.

  9. #9
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    juin 2003
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2003
    Messages : 756
    Points : 1 145
    Points
    1 145

    Par défaut

    Remarque : tu dois t'assurer que (8*i/45) est entier (puisque c'est un index).
    Tu peux utiliser "ceil" par exemple pour arrondir à l'entier supérieur (tu ne veux pas que (8*i/45) fasse 0!).
    Matlab 7.9.1.705 R2009b SP1 | W7
    Pas de question technique par MP, Merci

  10. #10
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : janvier 2013
    Messages : 38
    Points : 0
    Points
    0

    Par défaut

    Merci beaucoup pour votre aide tout fonctionne correctement !

Discussions similaires

  1. [VBA]Affectation d'une valeur à une cellule par une fonction
    Par lallougri dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/02/2006, 14h24
  2. retourner un vector a 2 dimensions par une fonction
    Par Psykotik dans le forum SL & STL
    Réponses: 7
    Dernier message: 18/11/2005, 17h45
  3. Réponses: 11
    Dernier message: 31/10/2005, 17h59
  4. [LG]résultat renvoyé par une fonction
    Par le 27 dans le forum Langage
    Réponses: 3
    Dernier message: 10/12/2003, 10h31
  5. tableau javascript ecrit par une fonction asp
    Par LineLe dans le forum ASP
    Réponses: 4
    Dernier message: 03/11/2003, 08h38

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