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

Octave Discussion :

Utiliser une fonction.m d'un autre package


Sujet :

Octave

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Utiliser une fonction.m d'un autre package
    Bonjour.

    J'ai besoin d'utiliser certaines fonctions d'Octave comme par exemple corrcoef.m. Celle-ci est présente en au moins deux versions différentes dans la suite logiciel :
    /usr/share/octave/3.2.4/m/statistics/base/corrcoef.m (la version imposée)
    /usr/share/octave/packages/3.2/nan-1.0.9/corrcoef.m issue de octave-nan (celle que je désire utiliser)

    Je veux donc utiliser la deuxième version plus complète mais à chaque fois que j'invoque la fonction corrcoef.m, c'est la première qui m'est imposée. Je ne sais pas s'il y a un fichier de paramétrage ou s'il y a une quelconque manipulation à réaliser au lancement d'Octave.

    Je sais qu'il serait sans doute possible de faire ça brutalement en échangeant les fichiers, mais je cherche dans un premier temps une méthode "douce".

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 308
    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 308
    Points : 52 891
    Points
    52 891
    Par défaut
    Sous MATLAB, la solution la plus simple consisterait à copier le fichier de la fonction que tu souhaites utiliser dans le dossier contenant ton programme.

    Ou encore mieux dans un sous-dossier nommé "private"

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Salut.

    J'ai déjà copié corrcoef.m mais la fonction a alors des dépendances non satisfaites qui m'obligent à appeller d'autres fonctions. Je crains de devoir ainsi en copier toujours plus. C'est pour cela que cette façon de faire ne m'enchante guère pour le moment. À défaut de trouver mieux, je serais cependant forcé d'y venir.

  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 308
    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 308
    Points : 52 891
    Points
    52 891
    Par défaut
    C'est clairement la limite de la méthode.

    Deux solutions :

    1) soit tu copies toutes les dépendances (généralement le dossier lui-même) dans le sous-dossier "private"

    2) soit tu ajoutes une ligne avec ADDPATH et le chemin de la fonction au début de ton code. Mais dans ce cas, les fonctions du même dossier seront toutes prioritaires par rapport aux fonctions Octave

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 308
    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 308
    Points : 52 891
    Points
    52 891
    Par défaut
    Et sinon une 3ème solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    p = pwd;
     
    cd('/usr/share/octave/packages/3.2/nan-1.0.9/')
     
    corrcoef(...)
     
    cd(p)

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Dut Voir le message
    C'est clairement la limite de la méthode.

    Deux solutions :

    1) soit tu copies toutes les dépendances (généralement le dossier lui-même) dans le sous-dossier "private"

    2) soit tu ajoutes une ligne avec ADDPATH et le chemin de la fonction au début de ton code. Mais dans ce cas, les fonctions du même dossier seront toutes prioritaires par rapport aux fonctions Octave
    J'ai tenté ces deux choses. Dans le deux cas le résultat est le même, j'obtients un résultat incohérent sans message d'erreur.

    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
    17
     
    octave:1> addpath(genpath("/usr/share/octave/packages/3.2/nan-1.0.9/"))
    octave:2> a=randn(1,10);
    octave:3> b=randn(1,10);
    octave:4> corrcoef(a,b)
    ans =
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN

  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 308
    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 308
    Points : 52 891
    Points
    52 891
    Par défaut
    Après avoir copié les fichiers flag_implicit_skip_nan.m, sumskipnan.m et corrcoef.m à partir de cette source , voici le résultat sous MATLAB :
    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
    >> a = randn(1,10);
    >> b = randn(1,10);
    >> corrcoef(a,b)
     
    ans =
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
    Si je supprime le fichier coorcoef de Octave et que j'utilise celui de MATLAB avec les mêmes données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> corrcoef(a,b)
     
    ans =
     
        1.0000    0.2786
        0.2786    1.0000
    Je pense que tu devrais étudier l'aide de ces fonctions Octave...

Discussions similaires

  1. [XL-2010] Faut-il utiliser une fonction RECHERCHE ou autre ?
    Par anonymous9 dans le forum Excel
    Réponses: 2
    Dernier message: 04/02/2014, 17h26
  2. utiliser une fonction d une class dans une autre
    Par geocarre27 dans le forum C++
    Réponses: 23
    Dernier message: 17/06/2013, 13h19
  3. [ZF 2.0] Utiliser une fonction d'un autre module
    Par xl-celine dans le forum MVC
    Réponses: 1
    Dernier message: 07/03/2013, 15h02
  4. Réponses: 1
    Dernier message: 19/09/2012, 11h27
  5. Utiliser une fonction
    Par MaxiMax dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/08/2005, 07h53

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