utilisation de octave
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

utilisation de octave



  1. #1
    robotzeus1

    utilisation de octave


    ------

    bonjour
    je me suis inscrit a un cour en ligne de traitement du signal et je bloque des le premier exercice a cause en tre du faite que je ne maitrise pas octave

    bonjour
    je commence des cours en ligne qui neccesite l'utilisation mathlab/ octave

    j'ai donc installer octave mais j'ai des erreurs et je ne sais pas trop comment y faire face

    serait t'il posible que l'on m'explique les point bloquant du programme suivant
    Code:
        function [err,t,f,x,p]=intlag(n)
        %
        %Etant donne un entier n et une fonction continue f,
        %le programme interpole la fonction f par un polynome p
        %de degre n aux points d interpolation t(1),t(2),...,t(n),t(n+1).
        %parametres: entree : n
        % sortie : err : erreur max entre la fonction f et l interpolant p
        % t : (n+1) vecteur contenant les points d interpolation
        % f : (n+1) vecteur contenant les valeurs de la fonction f
        % aux points d interpolation
        % x : vecteur contenant 1001 points uniformement distribues
        % sur [-1,1]
        % p : vecteur contenant les valeurs du polynome p au point x(i)
        %
        %
        %initialisation des vecteurs t et f
        %
        for i=1:n+1
        t(i)=-1+(2.*(i-1))/n;
        f(i)=funct(t(i));
        end
        %
        %calcul de la valeur du polynome d interpolation au point x(i)
        %
        m=1000;
        err=0;
        for i=1:m+1
        x(i)=-1+(2.*(i-1))/m;
        p(i)=0;
        for j=1:n+1
        p(i) = p(i) + f(j) * phi(j,n,t(j),x);
        end
        err = max(err,abs(p(i)-funct(x(i))));
        end
        end
        %calcul de phi_j (la j_ieme fonction de la base de Lagrange)
        function basis = phi(j,n,xx,t)
        basis=1;
        for k=1:n+1
        if k ~= j
        basis = basis * (t-t(k))/(t(j)-t(k));
        end
        end
        end
        %fonction a interpoler
        function f = funct(xx)
        f = sin(t);
        end
    les lignes que j'ai


    pour être plus clair le premier lancement me dissais
    error: 'n' undefined near ...
    j'en ai deduit qu'il me manquais le parramettre et j'ai donc fait
    intlag 2
    mais maintenant j'ai
    error: 't' undefined near
    j'ai relu un peu le code et j'ai essayer avec
    intlag 20(44)
    et j'ai
    error: intlag : operator /: nonconformant arguments (op1 is 1x1 , op2 is 1x6)
    error : called from intlag at line 19 column

    j'en conclue que j'ai sans doute encore un problême de parrametre mais je n'arrive pas vraiment a comprendre ce qu'il faut faire

    l'ennoncer de la question dit

    compléter et tester avec matlab/octave, puis répondre au questions ci-dessous. Pour lancer le calcul taper :

    [err,t,f,x,p]=intlag(5);

    dans la fenêtre matlab (ou octave). Les résultats pourront ensuite être visualisés en tapant :

    plot(t,f,'o',x,p);
    bref je ne sais pas si c'est clair pour quelqu'un mais j'aimerais bien commencer a comprendre
    PS :les ligne que j'ai completé sont les ligne 31 , 41 et 47 (remplacement des ???? par une des proposition

    merci d'avance pour votre aide j'en profiterais pour en faire partager les autres utilisateur qui sont dans la même galere et qui n'ont pas de réponse sur le forum du cour

    -----

  2. #2
    robotzeus1

    Re : utilisation de octave

    Personne pour m'aider?
    de mon coté j'ai corriger le code mais je n'arrive toujours pas a l'utiliser
    Code:
        function [err,t,f,x,p]=intlag(n)
        %
        %Etant donne un entier n et une fonction continue f,
        %le programme interpole la fonction f par un polynome p
        %de degre n aux points d interpolation t(1),t(2),...,t(n),t(n+1).
        %parametres: entree : n
        % sortie : err : erreur max entre la fonction f et l interpolant p
        % t : (n+1) vecteur contenant les points d interpolation
        % f : (n+1) vecteur contenant les valeurs de la fonction f
        % aux points d interpolation
        % x : vecteur contenant 1001 points uniformement distribues
        % sur [-1,1]
        % p : vecteur contenant les valeurs du polynome p au point x(i)
        %
        %
        %initialisation des vecteurs t et f
        %
        for i=1:n+1
        t(i)=-1+(2.*(i-1))/n;
        f(i)=funct(t(i));
        end
        %
        %calcul de la valeur du polynome d interpolation au point x(i)
        %
        m=1000;
        err=0;
        for i=1:m+1
        x(i)=-1+(2.*(i-1))/m;
        p(i)=0;
        for j=1:n+1
        p(i) = p(i) + f(j) * phi(j,n,x(i),t);
        end
        err = max(err,abs(p(i)-funct(x(i))));
        end
        end
        %calcul de phi_j (la j_ieme fonction de la base de Lagrange)
        function basis = phi(j,n,xx,t)
        basis=1;
        for k=1:n+1
        if k ~= j
        basis = basis * (xx-t(k))/(t(j)-t(k));
        end
        end
        end
        %fonction a interpoler
        function f = funct(xx)
        f = sin(t);
        end
    maintenant que je fait
    intlag 5

    j'ai une erreur qui vient de
    f = sin(t);
    j'ai esaiyé
    f = sin(xx)
    mais ca bloc

    en gros je fais un peu n'importe quoi car je comprend rien. y as t'il quelqu'un qui pourais m'aider a comprendre le fonctionnement du code et son utilisation?
    Dernière modification par Antoane ; 19/07/2017 à 12h34. Motif: Remplacement des balises quote par code

  3. #3
    CM63

    Re : utilisation de octave

    Ben le fait est qu'on ne connaît pas Octave , et comme c'est un nom un peu passe-partout on ne va pas chercher
    Ah ok, je viens de voir, c'est un peu un Matlab libre (GNU).
    Dernière modification par CM63 ; 19/07/2017 à 13h09.

  4. #4
    yannnnnn

    Re : utilisation de octave

    Salut je me suis inscrit au meme cours en ligne et j'ai le meme problème que toi est-ce-que tu as réussi a le corriger ?

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

    Re : utilisation de octave

    La question est: A-tu la doc de ce langage ?
    Sans une documentation complète et exhaustive on ne va nulle part.
    Certains "cours" consistent à donner de la doc par petits bouts, ça craint.

  7. #6
    umfred

    Re : utilisation de octave

    Il faut reprendre les fonctions, les paramètres ne me semblent pas dans le bon ordre.
    Et attention aux quelques incompatibilités entre matlab et octave: les end de matlab doivent être mieux identifié, si j'ose dire, en octave, le end d'un if en octave, c'est endif, pour un for c'est endfor et pour une function c'est endfunction. Donc commencer par apporter ces modifications..

    Ensuite, être sûr d'avoir choisir les bons éléments pour compléter le programme (comme on n'a pas le lien, ni les propositions, on ne peut pas trop aider)

  8. #7
    Paraboloide_Hyperbolique

    Re : utilisation de octave

    Bonjour,

    J'ai fait tourné le code sans problème sous octave 6.4.0 avec la modification f = sin(xx) dans la fonction 'funct(xx)'.

    Citation Envoyé par umfred Voir le message
    Et attention aux quelques incompatibilités entre matlab et octave: les end de matlab doivent être mieux identifié, si j'ose dire, en octave, le end d'un if en octave, c'est endif, pour un for c'est endfor et pour une function c'est endfunction. Donc commencer par apporter ces modifications.
    C'était vrai pour les anciennes versions d'Octave. Cela ne l'est plus maintenant. Il reste cependant bien des incompatibilités; surtout des fonctions Matlab dans certaines toolbox qui n'existent pas sous Octave. Il y a aussi maintenant la tendance à ne plus mettre le 'end' final dans les fonctions Matlab. Les versions récentes d'Octave semblent cependant pouvoir supporter cela (quoique ma version me renvoie un warning).

    Citation Envoyé par umfred Voir le message
    Il faut reprendre les fonctions, les paramètres ne me semblent pas dans le bon ordre.
    Oui, je trouve le code assez mal fichu (et pour un cours c'est maaaal). En plus, rien n'est fait pour tirer parti des capacités de vectorisation de Matlab/Octave, ce qui rend ce code vite très lent pour des valeurs de n un peu grande. Bref, il y a moyen de coder une interpolation de Lagrange bien plus proprement que ce qui est proposé par ce code.

  9. #8
    umfred

    Re : utilisation de octave

    pour les end, j'ai regardé dans l'aide en ligne actuelle (la version 8.1.0) https://docs.octave.org/latest/Statements.html
    la compatibilité est a priori possible en effet, donc on peut mettre entre parenthèse cette remarque si on vient de matlab

    Pour le code, je n'avais que tester celui du 1er post effectivement , le plus récent fonctionne après modification.

    En 2017 (date d'origine du post), il y avait peut-être le souci des 'end' ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/03/2013, 22h21
  2. octave plot
    Par inviteb4450379 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 01/09/2011, 11h53
  3. Octave
    Par inviteec8c9286 dans le forum Physique
    Réponses: 1
    Dernier message: 29/04/2009, 20h56
  4. Octave
    Par invite92876ef2 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 26/03/2007, 20h23
  5. Octave sur Win98
    Par livre dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 29/09/2005, 14h26