Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?
Répondre à la discussion
Affichage des résultats 1 à 20 sur 20

Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?



  1. #1
    ellymimi

    Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?


    ------

    Bonjour à tous,

    Je souhaite exécuter les matrices qui sont contenues dans plusieurs fichiers différents. Je veux former une boucle qui va faire ca automatiquement (car il y a 600 fichiers!).
    J'ai pensé à utiliser la commande sprintf pour enregistrer tous ces fichiers dans une variable:

    filename=sprintf('09.d.0%d',n)

    Mais lorsque je fais disp le fichier, cela ne fonctionne pas...
    Quelqu'un saurait comment faire?

    Merci d'avance

    -----

  2. #2
    albanxiii
    Modérateur

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Bonjour,

    Que veut dire "exécuter une matrice" ?

    @+
    Not only is it not right, it's not even wrong!

  3. #3
    ellymimi

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Slt,
    Je suis désolée de ne pas avoir été claire...
    En fait, je veux juste tracer ces matrices (avec leurs deux vecteurs).
    Mais j'ai une autre idée maintenant, c'est d'utiliser la commande "dir". Mais il faut utiliser une boucle ...

  4. #4
    albanxiii
    Modérateur

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Re-bonjour,

    Vous allez croire que je fais exprès, mais que signifie "tracer une matrice" ?
    J'ai du mal à voir ce dont il s'agit...

    @+
    Not only is it not right, it's not even wrong!

  5. A voir en vidéo sur Futura
  6. #5
    ellymimi

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Slt,
    En fait, ma matrice A a deux colonnes, la première x, la deuxième y, je souhaite donc tracer A(x,y)

  7. #6
    stefller

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Bonjour,

    Déjà vérifiez que vos fichiers débutent bien par la première ligne de valeurs des deux colonnes sinon celà ne peut pas fonctionner sous ce logiciel. Ensuite la boucle c'est la solution. Il faut juste que vos fichiers soit nommés de type : "Nom"1, "Nom"2. Et vous incrémentez votre boucle sur le nom du fichier.

  8. #7
    ellymimi

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    En fait, mes fichiers sont déjà nommés, mais de format plus compliqué, "9d.0168", "9d.0156"... mais lorsque je fais liste=dir"C//..." ensuite liste(1).name, il affiche bien le premier fichier.
    Après, le problème c'est que la première ligne ne doit pas être exécutée car elle contient les définitions.
    Voilà ma fonction :

    function [a,b]=interpmouse (A) %this function contains two vectors (output) of the matrix A
    a=polyfit(A(2:end,1),A(2:end,2 ),1);% we assign a to the interpolation of the two columns of A, from the second line to the end, of the order 1(linear)
    b=polyfit(A(2:end,1),A(2:end,2 ),2); % we assign a to the interpolation of the two columns of A, from the second line to the end, of the order 2 (curve)

    il faut maintenant que j'insère une boucle pour exécuter tous les fichiers, mais je ne sais pas comment on fait...

  9. #8
    stefller

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Si vos fichiers sont lus par Matlab c'est déjà ça.

    Pour créer une boucle, il faut qu'il y ait une logique dans le nom des fichiers pour pouvoir insérer l'indice d'incrémentation i dans le nom de fichier (avec la fonction int2str(i) il me semble, à vérifier comment on l'insère dans le nom avec des apostrophes je pense).

    Si tes fichiers sont nommés avec des nombres dont les intervalles ne sont pas régulier (donc pas d'incrémentation facile à réaliser) tu peux utiliser une condition en testant si le fichier existe (fonction EXIST, je crois)

  10. #9
    Arzhur

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Bonjour,


    il faut maintenant que j'insère une boucle pour exécuter tous les fichiers, mais je ne sais pas comment on fait...
    Ou bloques-tu ?

    Si je comprends bien ce que tu dis, tu arrives a récupérer une liste contenant tes noms fichiers (avec la commande dir)....yapuka boucler sur la liste.

  11. #10
    ellymimi

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Slt tout le monde,

    J'ai ceci:

    liste=dir (fullfile('C:\Users\j\Document s\MATLAB\matrix', '*.txt'))
    for i=1:8
    filename=liste(i).name
    end

    Mais le problème c'est lorsque je fais disp(filename), il m'affiche le nom du dernier fichier (liste(8).name).
    stefller : je pense que tu as raison, c'est parce que les nomns de mes fichiers ne sont pas logiques. Mais je ne sais pas comment écrire une boucle condition pour tester si c'est vrai.
    Exemples: 09.d.0168.txt
    09.d.0202.txt
    09.d.0428.txt

    J'ai pensé aussi à utiliser, stefller, :
    str=strcat('C:\Users\jchhieng\ Documents\MATLAB\matrix\09.d.' ,int2str(i),'.txt')
    Mais cela ne fonctionne pas... :'(

  12. #11
    Arzhur

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Mais le problème c'est lorsque je fais disp(filename), il m'affiche le nom du dernier fichier (liste(8).name).
    Tu le mets ou ton disp ?Si tu mets ton "disp" après la boucle c'est un peu normal...


    J'ai pensé aussi à utiliser, stefller, :
    str=strcat('C:\Users\jchhieng\ Documents\MATLAB\matrix\09.d.' ,int2str(i),'.txt')
    Mais cela ne fonctionne pas... :'(
    Tu l'utilises comment ?

  13. #12
    stefller

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Bonjour,

    Je vous mets un extrait d'un programme que j'avais écrit où les fichiers se nommés:

    VitessePosition01.dat
    ...
    VitessePosition19.dat

    et ce que je voulais c'était mettre les données dans une seule matrice (N,2):


    Code:
    clear all
    clc
    B=zeros(1048576,1);
    A=zeros(1048576,1);
    
    for i=1:19
        if i<10
           [V, X]=VelocityFileReading(strcat('VitessePosition0',int2str(i),'.dat'));
           
        else
            [V, X]=VelocityFileReading(strcat('VitessePosition',int2str(i),'.dat'));
         end
         V=[B,V];
         X=[A,X];
         B=V;
         A=X;
    end
    Cela peut vous aider pour l'incrementation.
    Ensuite si vous avez besoin de tester l'existance du fichier vous ajoutez une condition à l'intérieur de la boucle for du style:


    for
    ...
    if("Fichier existe")
    "On le copie dans une matrice
    end

    ...
    end
    Dernière modification par JPL ; 21/05/2014 à 13h44. Motif: Ajout de la balise Code (#) pour garder l'indentation

  14. #13
    ellymimi

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Arzhur: oublie mon truc avec str, je pense que ca sert à rien...
    je voulais tout d'abord afficher tous mes fichiers. J'ai écrit:

    for i=1:8;
    filename=load(liste(i).name)
    end

    et ca marche.

    Maintenant, je souhaite "tracer" ces matrices dans plusieurs fenetres côte à côte, en utilisant une boucle for et subplot. Mais je ne sais pas comment faire cela.

    stefller: je vais réfléchir à ton code, il peut peut-être m'aider, mais la différence c'est que tu as mis tous tes fichiers dans une seule et même matrice...

  15. #14
    Arzhur

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Arzhur: oublie mon truc avec str, je pense que ca sert à rien...
    C'est comme tu veux : soit tu définis une règle de nommage pour tes fichiers comme ce que te suggère Stefller soit tu parcours tout le contenu d'un dossier....Mais dans le cas le truc avec str peut très bien servir

    Maintenant, je souhaite "tracer" ces matrices dans plusieurs fenetres côte à côte, en utilisant une boucle for et subplot. Mais je ne sais pas comment faire cela.
    Un petit exemple de subplot : http://nte.mines-albi.fr/MATLAB/co/uc_subplot.html

    C'est pas bien méchant, faut juste se visualiser une grille que tu remplis au fur et à mesure.

  16. #15
    ellymimi

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    stefller: Dsl mais je pige pas trop ton code...
    Du coup, auriez-vous une idée pour tracer par exemple 8 fichiers (=matrices) en même temps, avec subplot?
    Moi j'ai fait:

    s=load(liste(1).name)

    subplot(4,2,1)
    >> plot(s(2:end,1),s(2:end,2))
    >> subplot(4,2,2)
    plot(c(2:end,1),c(2:end,2))
    >> subplot(4,2,3)
    >> plot(f(2:end,1),f(2:end,2))
    >> d=load(liste(4).name)

    Mais je dois définir la matrice par un nom à chaque fois...
    Si je fais s(i)=load(liste(i)
    subplot(4,2,1)
    >> plot(s(i)(2:end,1),s(i)(2:end, 2))
    ...
    ca fonction surement pas...

  17. #16
    stefller

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Bonjour,

    Citation Envoyé par ellymimi Voir le message
    stefller: je vais réfléchir à ton code, il peut peut-être m'aider, mais la différence c'est que tu as mis tous tes fichiers dans une seule et même matrice...
    Oui c'est vrai, mais il te suffit de créer une matrice pour chaque incrémentation alors que moi j'avais juste créé une matrice avant la boucle for. Je ne connaissais pas la méthode d'une liste de fichier mais ça m'a l'air une meilleure solution.

  18. #17
    Arzhur

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    Mais je dois définir la matrice par un nom à chaque fois...
    Si je fais s(i)=load(liste(i)
    subplot(4,2,1)
    >> plot(s(i)(2:end,1),s(i)(2:end, 2))
    ...
    ca fonction surement pas...
    Oui, souvent il faut donner des noms aux variables pour pouvoir les manipuler (tu peux réutiliser les noms aussi)....Par contre je ne suis pas sur qu'un vecteur de matrice soit possible sous Matlab ( a confirmer ou non)

  19. #18
    ellymimi

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    ouiiii, j'ai réussi !
    for i=1:8
    filename=load(liste(i).name);
    subplot(8,2,i)
    plot(filename(2:end,1),filenam e(2:end,2))
    end

    Bon, maintenant il faut que je fasse une interpolation pour chacune de ces matrices.

    Merci beaucoup pour ton aide ^^

  20. #19
    Arzhur

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    petit conseil : utilise plutôt size(liste) pour ton itération : ça rend ton code plus souple (si par exemple demain tu dois faire la même chose avec 10 fichiers)

  21. #20
    ellymimi

    Re : Matlab: Comment exécuter matrice par matrice dans différents fichiers donnés?

    entendu, merci ^^

Discussions similaires

  1. Décryptage des donnés a l'aide d'un seul déterminant qui écrit tout un matrice entier?
    Par extrazlove dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 29/06/2013, 15h58
  2. comment obtenir une matrice triangulaire quelque soit la matrice ?
    Par membreComplexe12 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 13/11/2011, 17h03
  3. Ecrire une matrice dans Word par Matlab
    Par electron22 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 19/04/2011, 16h15
  4. Matlab - Insérer ligne dans matrice
    Par invite1038f851 dans le forum Logiciel - Software - Open Source
    Réponses: 21
    Dernier message: 28/06/2010, 08h59
  5. Effacer une colonne dans une matrice sous Matlab
    Par invitecb054b2d dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 10/01/2005, 18h21