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 :

load automatique pour calcul en masse [Débutant]


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    biologiste
    Inscrit en
    Mai 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2012
    Messages : 30
    Points : 16
    Points
    16
    Par défaut load automatique pour calcul en masse
    bonjour à tous,

    je débute sur MATLAB
    j'ai codé quelques fonctions qui me permettent d'avoir des informations type moyenne etc...
    pour chacun des fichiers, j'ai une 10e de valeur.

    alors la routine de calcul tourne bien mais je suis obligé de loader chaque fichier manuellement!!!!!

    petite précision: chaque fichier chargé vient incrémenté un vecteur qui contiendra toutes les valeurs (vecteur A contient toutes les valeurs moyennes des n fichiers que j'ai chargé).

    donc ma question est comment je peut faire pour que ma routine prenne tout mes fichiers d'un dossier sans que j'ai besoin de le loader moi même?????

    voici mon code (enfin le début) :

    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
    clear all
    close all
     
    pathname = '/Volumes/Untitled/fichier_134329/';
    newname = 'MaIx_PH_xx_11082011_cs07_nrnx1'; % nouveau fichier que je dois loader a chaque fois
     
    load /Users/Raphael/Desktop/Data_rest/data_rest % fichier qui mémorise mes vecteur contenat toutes mes valeurs
    eval(['load ' pathname newname])
     
    name = [name; newname]
    newsize = length(mean_FR)+1; % mon conteur d'incrémentation
    thresh = 0.10;
     
    % Mean firing rate
    mean_FR(newsize) = length(times)/max(times)% exemple de calcul
    merci par avance

  2. #2
    Invité
    Invité(e)

  3. #3
    Membre à l'essai
    Homme Profil pro
    biologiste
    Inscrit en
    Mai 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2012
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    bonsoir,
    merci pour ta réponse


    donc si j'ai bien compris en utilisant la fonction ' dir ' je lui dit de prendre tous ce qu'il y a ddans le répertoire en .m (par exemple). et en suite j'utilise la varaible list qu'il a créé qui va me permettre d'appeller chaque fichier qui passera dns ma boucle de calcul .

    merci encore je teste ca demain et te tien au courant.
    bonne nuit

  4. #4
    Membre à l'essai
    Homme Profil pro
    biologiste
    Inscrit en
    Mai 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2012
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    bonjour,

    me revoila,

    alors cela ne fonctionne pas car les fichiers que je veux ouvrir son des fichiers .mat donc si j'ai bien compris il faut plutôt utiliser ' load ' que 'fopen ' mais cela ne fonctionne pas avec une variable de type 'structure ' comme list.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sdneuro Voir le message
    il faut plutôt utiliser ' load ' que 'fopen '
    Je confirme

    Citation Envoyé par sdneuro Voir le message
    mais cela ne fonctionne pas avec une variable de type 'structure ' comme list.
    Est-ce parce que tu utilise cette syntaxe eval(['load ' pathname newname]) ?
    Il y a beaucoup plus propre qu'tiliser eval, et comme tu auras pu le voir dans la FAQ, on utilise fullfile pour concaténer le chemin et le nom du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    load(fullfile(pathname,newname))

  6. #6
    Membre à l'essai
    Homme Profil pro
    biologiste
    Inscrit en
    Mai 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2012
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    bonsoir,
    re,
    dabord, merci à toi pour tes réponses rapides et pertinantes.
    aprés avoir regardé dans le FAQ (encore merci de m'avoir guidé), je reformulais le code et cela fonctionne (sous la forme que tu as précisé, j'avvais trouvé lol).

    il va falloir que je reforme mes routines
    voici le code qui fonctionne trop bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    clear all
     
    rep = 'L:\bddtest\';
    ext = '*.mat';
    chemin = fullfile(rep,ext);
    list = dir(chemin);
     
     
    for n = 1 : numel(list)
        OF_se(n) = load(fullfile(rep,list(n).name))
             mean_FR(n) = length(OF_se(n).times)/max(OF_se(n).times);% exemple de calcul d'une variable d'un des fichiers
     
    end
    merci
    juste si tu pouvais me donner quelques précisions sur l'utilisation de ' numel '
    merci

  7. #7
    Invité
    Invité(e)
    Par défaut
    numel comme l'indique sa documentation doc numel retourne le nombre d’éléments.

  8. #8
    Membre à l'essai
    Homme Profil pro
    biologiste
    Inscrit en
    Mai 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2012
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    bonjour,
    me voile de retour.

    je bloque sur l'utilisation d'un des champs de ma structure en input dans une fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [sp_width,Wave_F] = demi_PAsteve(OF_se.shape)
    ou il me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ??? Error: File: demi_PAsteve.m Line: 1 Column: 48
    Unexpected MATLAB operator.
    enfaite je voudrai qu'il pratique un calcul uniquement sur ce champ ' shape' qui est une variable que l'on retrouve dans chaque cellule de ma structure. en sorti on obtient sp_width et Wave_F par exemple.

    pour faire ce calcul j'utilise cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [Y,I] = max(max(mean(OF_se.shape,3)));
    ave_wav = mean(OF_se.shape(:,I,:),3);
    merci
    merci par avance

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

    Je présume voyant ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [sp_width,Wave_F] = demi_PAsteve(OF_se.shape)
    et l'erreur que tu as définis la fonction comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function[sp_width,Wave_F] = demi_PAsteve(OF_se.shape)
    ?
    C'est le point qui pose problème utilise un nom de variable simple à la place. shape par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function [sp_width,Wave_F] = demi_PAsteve(shape)

  10. #10
    Membre à l'essai
    Homme Profil pro
    biologiste
    Inscrit en
    Mai 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2012
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    cela ne fonctionne pas avec une variable simple comme ' shape ' car shape est une variable contenue dans une cellule de structure ' OF_se '

    la seule solution que j'ai trouvé est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function [ mean_FR ] = meansteve(OF_se)
    times = OF_se.times;
    %UNTITLED2 Summary of this function goes here
    %   Detailed explanation goes here
     
             mean_FR = length(times)/max(times);
     
    end
    et dans mon script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [ mean_FR(n) ] = meansteve(OF_se(n));
    cela me semble un peu bizard ... tu en pense quoi?

  11. #11
    Invité
    Invité(e)
    Par défaut
    Si tu l'appelles comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [sp_width,Wave_F] = demi_PAsteve(OF_se.shape)
    C'est que tu souhaites rentrer le champs shape de cette structure non ?

    Que cherches-tu à faire exactement ?

  12. #12
    Membre à l'essai
    Homme Profil pro
    biologiste
    Inscrit en
    Mai 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2012
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    bonjour,
    je ne peux pas mettre de point.
    j'ai trouvé une solution je mettrai le code en fin de journée. ça marche violemment.
    merci encore.

    ce forum est vraiment trop génial.

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

Discussions similaires

  1. [XL-2010] Macro pour calculer automatique des pointages de questionnaire?
    Par sapage6 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 07/03/2015, 12h51
  2. [XL-2007] Formule pour calcul automatique si vente
    Par scoubart dans le forum Excel
    Réponses: 6
    Dernier message: 15/09/2014, 10h37
  3. [XL-2003] MAcro pour calcul automatique uniquement sur l'onglet actif
    Par Arndt dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/07/2010, 15h12
  4. update pour calcul pourcentage (SQL SERVER 2000)
    Par meufeu dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/09/2005, 09h04
  5. Réponses: 2
    Dernier message: 01/04/2003, 22h09

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