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 :

Copier une partie d'un tableau dans un autre tableau


Sujet :

MATLAB

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut Copier une partie d'un tableau dans un autre tableau
    Bonjour,
    J'aimerai avoir une astuce pour copier une partie d'un tableau dans un autre tableau .
    J'ai un tableau de 24 valeurs sur 10000 lignes et je voudrais copier les valeurs comprises entre les lignes 1000 et 2000 par exemple , comment puis-je faire?
    Il y a la solution de la boucle mais bon ça prend du CPU et c'est pas beau.

    Merci

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

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Salut,
    regarde ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monTableau = rand(24,10000);
    monExtrait = monTableau(:,2000:3000);
    C'est bien ce que tu voulais faire?

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Sur le principe ça marche mais je n'arrive pas à l'appliquer à mon cas .
    Voici les données d'entrées .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    PointeurTableau = [1000,2200,3000,4500]% 3 zones à extraires
    monTableau = rand(24,10000);
    for k=2:4 % 4 car 4 pointeurs dans mona tableau
            SaveLat(k) = monTableau (:,PointeurTableau(k-1):PointeurTableau(k));        
     end
    Et là ç'est le drame ....
    ??? Index exceeds matrix dimensions.
    même à la première boucle

    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Il faut utiliser un tableau de cellules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SaveLat{k-1}= monTableau (:,PointeurTableau(k-1):PointeurTableau(k));

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Je tente de suite Merci


    Bon ben même punition
    voici le code que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PointeurTableau = [1000,2200,3000,4500]% 3 zones à extraires
    monTableau = rand(10000,24);
     
    for k=2:4 % 4 car 4 pointeurs dans mon tableau
         SaveLat{k-1} = monTableau (:,PointeurTableau(k-1):PointeurTableau(k));        
     end

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Bonsoir,

    Je ne suis pas certain de t'aider mais il faut que tu vérifies pourquoi l'erreur sur l'indice excédé se poursuit dans un premier temps. Tu peux essayer de te passer d'indice dans le tableau où tu veux stocker les différentes lignes, c'est-à-dire pas de SaveLat{k-1} mais peut-être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PointeurTableau = [1000,2200,3000,4500]% 3 zones à extraires
    monTableau = rand(10000,24);
    SaveLat=[];
     
    for k=2:4 % 4 car 4 pointeurs dans mon tableau
         SaveLat=[SaveLat; monTableau (:,PointeurTableau(k-1):PointeurTableau(k))];
     end
    Avec les "(" ou les "{", je ne sais pas. Je ne peux pas tester malheureusement car je n’ai plus matlab.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Citation Envoyé par sdecorme Voir le message
    Bon ben même punition
    Et rien ne te choque ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTableau = rand(10000,24);
    @abel413 : ta solution ne fonctionnera pas car les vecteurs à stocker n'ont pas le même nombre d'éléments.

    Tu obtiendras l'erreur:

    Error using vertcat
    CAT arguments dimensions are not consistent.
    c'est pour cette raison que je conseille d'utiliser un tableau de cellules ici

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Bonjour les matineaux ...
    Tu as raison j'ai fait 2 modif en même temps
    ce code fonctionne parfaitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    PointeurTableau = [1000,2200,3000,4500]% 3 zones à extraires
    monTableau = rand(24,10000);
    for k=2:4 % 4 car 4 pointeurs dans mon tableau
         Extrait{k-1} = monTableau (:,PointeurTableau(k-1):PointeurTableau(k));      
     end
    Je retrouve toutes mes cellules remplies dans Extrait.

    Par contre je reviens sur le fait que ça ne marchait pas car j'avais modifié effectivement mon initialisation comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monTableau = rand(10000,24);
    Car c’est comme ça que mes données sont réellement stockées actuellement
    un tableau de 24 colonnes et 10000 lignes , il s'agit d'un fichier de données que je charge en mémoire.Soit je réorganise mon tableau soit je trouve une autre façon de charger le fichier en mémoire.
    Actuellement je fais basiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monTableau = load(file);
    Merci

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Dans ce cas, fais simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Extrait{k-1} = monTableau(PointeurTableau(k-1):PointeurTableau(k),:);
    Non ?

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Of course
    Chaque fois que je me remets à matlab je galère un peu (beaucoup)
    Merci

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/02/2021, 10h49
  2. Réponses: 2
    Dernier message: 26/03/2013, 13h43
  3. récupération de variables d'un tableau dans 1 autre tableau
    Par deneb92 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/12/2010, 13h19
  4. passer un tableau dans un autre tableau
    Par lrgtk dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 07/09/2010, 19h11
  5. création de tableau dans un autre tableau
    Par freestyler dans le forum Delphi
    Réponses: 2
    Dernier message: 02/11/2006, 08h54

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