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 :

path sous Octave d'une fonction matlab


Sujet :

Octave

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 25
    Points
    25
    Par défaut path sous Octave d'une fonction matlab
    Bonjour à tous,

    je débute en Octave mais le maitrise la bete matlab!

    Je voudrais transférer mes scripts matlab sous Octave.
    Ce que j'ai fait. J'ai fait les modiff necessaires pour qu'ils ressemblent à l'écriture Octave. Mais quand je veux tester ma fonction comparerefoct:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    function [B,BINT,Res,RINT,STATS,R2,Fexp,errorvar]=comparerefoct(Matrix, VarLabels);
    #function used to compare spectralon 1 to spectralon 2
    #    %input : Matrix (data : spectra of spectralon)
    #   %        VarLabels : Wavelenghts nm
    #   %
     #  %output : 
     #  %           B : regressions coefficients
     #   %           R^2 : correlation coefficient via the regression 
       # %
       # %before :
       # %load spectra.ascii
        #%
       #%
       #%[B,BINT,Res,RINT,STATS,R2,Fexp,errorvar]=compareref(Matrix, VarLabels);
     
     
     
    [n m]=size(Matrix);
    s=std(Matrix')';
    xm=mean(Matrix')';
    xm=xm(:,ones(m,1));
    s=s(:,ones(m,1));
    Matrixs=(Matrix-xm)./s;
     
        spec1=mean(Matrixs(1:5,:));
        spec2=mean(Matrixs(6:end,:));
        figure(1)
        plot(VarLabels,spec1,'r-')
        title('spec1 en rouge, spec2 en bleu')
        grid on
        hold on
        plot(VarLabels,spec2,'b-')
     
     
       # %regression du spec1 VS spec2
     
       "%ajout d'une colonne de 1 Ã  la matrice des donnees
    [n m]=size(spec1);
    spec1=[  spec1' ones(m,1)]';
     
    #% debut de la regression de spec1 sur spec2
    X=spec1';
    Y=spec2';
     
    [B,BINT,Res,RINT,STATS] = regress(Y,X);
    B
    R2=STATS(1,1)
    Fexp=(STATS(1,2));
    errorvar=STATS(1,4)
     
    Yest=X*B;
     
    figure(2)
    plot(X(:,1),Y,'k*')
     
    #%ajout de la droite d'ajustement
     
    figure(2)
    hold on
    plot(X(:,1),Yest,'r-')
     
    #%afficher la droite d'ajustement
    Xmed=3*median(X(:,1));
    Ymed=3*median(Y);
     
    h=text(5+Xmed,Ymed(1)-5,['Y=',num2str(B(1)),'X + ',num2str(B(2))]);
    set(h,'Color','red','LineWidth',2);
     
    hold on
    h1=text(7+Xmed,Ymed(1)-3,['R^2=',num2str(STATS(1,1))]);
    set(h1,'Color','red','LineWidth',2);
     
    #regression lineaire
    #%regression de X1 sur X2
    #%X1=X2*b + F
    [n1 m1]=size(X(:,1)');
    xmod=[ones(m1,1) X(:,1)]; #%matrice du modele
     
    bmod=xmod\Y; #%coeff de regression!
     
    Ycalc=xmod(:,2)*bmod(2,1)+bmod(1,1);# %matrice des X2 recalculees par le modele 
     
    l=VarLabels;
    #%spectre résiduel
    Xres=(Y'-Ycalc');
     
    figure(3)
    subplot(2,1,1),plot(l,Xres'),grid on,title('spectre résiduel')
    subplot(2,1,2),plot(l,X(:,1)),grid on, title('spectralon vieux, spectralon (rouge), spectralon blanc par le modele(vert)')
    hold on
    plot(l,Y,'r')
    plot(l,Ycalc,'g-')
    endfunction
    Soit, ca vient d'une erreur dans la fonction, soit Octave ne reconnait pas le chemin et je ne sais pas faire un comme un "set path" de matlab. J'ai bien essayé des fonctions du type mais sans succes.
    D'ailleurs je crois qu'il ne connait pas la fonction ones? il ne la colore pas? pourtant je fais help ones et ca fait fonctionne...
    Bref, des pov' questions de débutantes.

    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    voila, j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    addpath(genpath("C:/Users/Propriétaire/Documents/aa_ile maurice NIR/données NIR/thons cuits/comparerefoct.m";
    savepath;
    pour sauver ma fonction et que octave la reconnaisse. Il me répond :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    warning: savepath: current path saved to ~\.octaverc
    donc ca veut dire que c'est bon? c'est sauvé?

    mais pourtant Octave ne reconnait tjs pas ma fonction!
    Définitivement, j'aime Matlab!

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    je crois que j'ai reglé mon pb de "setpath" en mettant ma fonction dans le dossier Octave...bin..

    Par contre, j'ai une nouvelle fonction, :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    function [IC2,IC3]=controlchartspectralon(X)
    #% function whos plots the control charts for spectrum of spectralon
    #%   input : blabla....
    #%
    #%output : 
    #%       IC2 : confidence intervalle for warning limits
    #%       IC3 : confidence intervalle for tolerance limits
    #%               
    #%                   [IC2,IC3]=controlchartspectralon(X);
    #
     
     
     
    load ('-mat','C:\Octave\3.2.4_gcc-4.4.0\bin\Test_spectralon_1.mat')
    [n m]=size(Matrix);   
    Xm=mean(Matrix);
    l=str2num(VarLabels);
     
    stand=std(Matrix);
     
    #%limites de surveillance
    IC2=2*(stand/sqrt(n));
     
    #%limites de controles
    IC3=3*(stand/sqrt(n));
     
    #%plot
     
    figure(1)
    h=plot(l,Xm+IC2);
    hold on
    grid on
    h1=plot(l,Xm-IC2);
    set(h,'Color','black','LineWidth',2)
    set(h1,'Color','black','LineWidth',2)
     
    figure(1)
    h2=plot(l,Xm+IC3);
    h3=plot(l,Xm-IC3);
    set(h2,'Color','red','LineWidth',2)
    set(h3,'Color','red','LineWidth',2)
     
    title('red: alarm limits, black : warning limits')
    xlabel('wavelenghts')
    ylabel('A.U.')
     
     
    #%projection des spectres des spectralon sur le graphe control charts
     
    Xm2=mean(X);
     
    figure(1)
    hold on
    plot(l,Xm2,'b-')
     
     
    endfunction
    et j'ai direct un message d'erreur car il n'arrive a faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    load ('-mat','C:\Octave\3.2.4_gcc-4.4.0\bin\Test_spectralon_1.mat')
    j'ai le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>>error: load: unable to find file Test_spectralon_1.mat
    error: called from:
    error:   C:\Users\Propriétaire\Documents\aa_ile maurice NIR\données NIR\thons c
    uits\spectresNIR\controlchartspectralon.m at line 16, column 1
    au fait, j'utilise QtOctave, je ne sais pas si ca change l'affaire.

    Merci de m'aider.

    Et j'ai peut etre aussi des erreurs dans mon code? des choses qu'Octave n'aime pas?

    Maïna

Discussions similaires

  1. Convertir une fonction matlab
    Par hm1ch dans le forum MATLAB
    Réponses: 10
    Dernier message: 05/12/2007, 16h57
  2. [Compiler] Utiliser une fonction MATLAB en C++
    Par SlySlayer dans le forum MATLAB
    Réponses: 6
    Dernier message: 23/08/2007, 08h35
  3. Problème ginput dans une fonction matlab
    Par matt67 dans le forum MATLAB
    Réponses: 12
    Dernier message: 05/06/2007, 15h24
  4. [intfilt] Convertir une fonction MATLAB en language C
    Par sandball22 dans le forum MATLAB
    Réponses: 10
    Dernier message: 10/04/2007, 16h06
  5. Exécution d'une fonction Matlab à partir de C++
    Par wassimb dans le forum MATLAB
    Réponses: 1
    Dernier message: 15/03/2007, 13h00

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