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 :

changement de dossier et fonctions


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut changement de dossier et fonctions
    salut tous,

    j'ai fais un programme qui fait divers calculs mais qui pour cela a besoin de changer de dossiers plusieurs fois au travers de diverses fonctions.

    Je pensais que ce que j'avais fait était correct mais ça ne fonctionne pas, j'ai cette erreur:
    ??? Undefined function or method 'writeDataFile' for input arguments of type
    'double'.
    Error in ==> writeFiles at 11
    writeDataFile(Gamma1,A1,B1,T6folder,currentFolder);
    Error in ==> calculs at 10
    writeFiles(gamma_data,A_data,B_data);
    Error in ==> methodeInverse at 21
    residu=calculs(parametres,RmEXP,FvEXP);
    pourtant mon code me parait correct, le voici:
    Ma fonction principale (pas de soucis elle appel la fonction calcul):
    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
    16
     
    close all
    clear all
    clc
    global normalisation;
    global count;
    count=0;
    RmEXP=[4.5e-9 3.5e-9 3e-9 1.25e-9 2.5e-9 1e-9]';
    FvEXP=[0.017 0.014 0.0155 0.014 0.00015 0.00001]';
    Gamma=0.1;
    A=918;
    B=64;
    parametresInitiaux=[Gamma, A, B];
    normalisation=[(1/Gamma) 0 0; 0 (1/A) 0; 0 0 (1/B)];  
    parametres=parametresInitiaux*normalisation;       
    residu=calculs(parametres,RmEXP,FvEXP);
    Ma fonction calcul (pas de soucis ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function RESIDU=calculs(parametresI,Rm_exp,Fv_exp)
    global normalisation;
    global count;
    gamma_data=parametresI(1)/normalisation(1,1);
    A_data=parametresI(2)/normalisation(2,2);
    B_data=parametresI(3)/normalisation(3,3);
    writeFiles(gamma_data,A_data,B_data);
    RESIDU=0;
    voici où ça pose probleme lorsque j'appel la fonction "writeDataFile":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function writeFiles(Gamma1,A1,B1)
    currentFolder=cd('C:\INVERSE');
    T6folder = cd('C:\INVERSE\T6');
    T200folder = cd('C:\INVERSE\T200');
    T300folder = cd('C:\INVERSE\T300');
    T400folder = cd('C:\INVERSE\T400');
    T500folder = cd('C:\INVERSE\T500');
    T560folder = cd('C:\INVERSE\T560');
    writeDataFile(Gamma1,A1,B1,T6folder,currentFolder);
    et voici cette fonction "writeDataFile":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function writeDataFile(Gamma,A,B,workingFolder,previousFolder)
    cd(workingFolder); %je me deplace dans le dossier ou je vais faire des calculs
    %ici je fais les calculs, et voici la derniere ligne de la fonction:
    cd(previousFolder);
    pouvez vous me dire quel est le soucis avec ma fonction ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    As-tu pensé à l'emplacement de cette fonction et au PATH de MATLAB?
    Lorsque tu fais tes Txxxfolder = cd('C:\INVERSE\Txxx'); ta fonction n'est plus dans le "Current Directory".

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci winJerome de ton aide !!

    je n'ai pas compris ta remarque, peux tu détailler stp ?

    EDIT:
    c'etait ceci le probleme, c'est pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monPath = cd('c:\INVERSE')
    mais plutot ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Dans MATLAB, la visibilité des fichiers et dossiers et limitée au dossiers retournés par la fonction PATH + le répertoire courant ("Current Directory" fixé avec la fonction CD) dans lequel tu te trouves. Si une fonction (ou fichier) n'est pas dedans, il ne sera pas visible par MATLAB sauf si tu spécifies son chemin entier.
    Donc si tu changes le répertoire courant mais continues d'utiliser une fonction qui s'y trouve, il te faut alors t'assurer qu'elle est sur le PATH de MATLAB.
    La fonction ADDPATH se chargera de cela.

    Citation Envoyé par 21did21 Voir le message
    c'etait ceci le probleme, c'est pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monPath = cd('c:\INVERSE')
    mais plutot
    ?
    Dans le premier cas, tu changes ton répertoire courant pour 'c:\INVERSE' (ou 'C:\INVERSE\T560' selon ton 1er code), dans le deuxième, tu définies seulement une variable, donc oui c'est normal que cela marche

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/08/2007, 11h33
  2. Réponses: 6
    Dernier message: 29/03/2007, 17h46
  3. Réponses: 5
    Dernier message: 10/09/2006, 14h33
  4. Changement de dossier ProFTPD
    Par network-as dans le forum Réseau
    Réponses: 1
    Dernier message: 28/05/2006, 22h15
  5. [VB6] Copier un dossier en fonction d'un autre
    Par Sytchev3 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/04/2006, 16h39

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