affichage matlab
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

affichage matlab



  1. #1
    invite78b1557a

    affichage matlab


    ------

    salut comment peut on afficher le nombre d'itération ainsi que les valeurs qui précédent la valeur finale pour ce petit programme qui marche et qui n'affiche que la solution finale x=1.13..(programme en matlab)
    x_lower=1;fa=-4;
    x_upper=3;fb=240;
    while abs((x_lower-x_upper))>0.01
    dlmwrite('monfile.txt',x,'d')
    x=(x_lower+x_upper)/2;f = 10*x.^3-2.*x.^2-12;
    if (f*fb)<0
    x_lower=x;fa=f;

    else
    x_upper=x;fb=f;
    end
    end;
    x

    -----

  2. #2
    fiatlux

    Re : affichage matlab

    salut,

    Pour le nombre d'itérations, tu mets par exemple k=0; avec ta boucle while, puis k=k+1; à la fin de la boucle (enlève le point-virgule si tu veux afficher k à chaque itération). Sinon mets simplement k ou disp(k) à la fin pour l'afficher.
    Pour les valeurs de x c'es pareil: mets just x ou disp(x) dans la boucle, genre avant le dernier end. Tu peux aussi garder toutes les valeurs dans un vecteur.
    Comme il n'y a pas vraiment moyen de savoir quand la boucle va quitter, ce que tu peux faire c'est garder les valeurs que prend x pendant à chaque boucle. Genre juste avant le dernier end, tu mets valeurs(1,k)=x; après k=k+1.


    Code:
    k=0;
    x_lower=1;fa=-4; 
    x_upper=3;fb=240;
    while abs((x_lower-x_upper))>0.01
    dlmwrite('monfile.txt',x,'d')
    x=(x_lower+x_upper)/2;f = 10*x.^3-2.*x.^2-12;
    if (f*fb)<0
    x_lower=x;fa=f;
    else
    x_upper=x;fb=f;
    end
    k=k+1
    valeurs(1,k)=x
    end;
    x
    La pie niche-t-elle haut ? Oui, la pie niche haut.

  3. #3
    fiatlux

    Re : affichage matlab

    En gros pour afficher la valeur d'une variable VAR avec matlab t'as deux possiblités, soit t'écris juste le nom de la variable (sans point virgule après), soit t'utilises la fonction disp:
    Code:
    VAR
    disp(VAR)
    La pie niche-t-elle haut ? Oui, la pie niche haut.

  4. #4
    invite78b1557a

    Re :fiatlux file matlab

    salut fiatlux merci de votre aide si je me permet le faite d'ecrire valeur(1,k)=x est ce que cela veut dire creation d'un vecteur d'une ligne et plusieurs colonne une deuxieme question si c'est possible je veux avoir les valeurs de k et x dans un fichier que je peut ouvrir j'ai essayé avec dlmwrite et je n'obtient que la valeur finale sans pouvoir afficher le nbre d'iteration k

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

    Re : affichage matlab

    Salut

    J'avais pas vu la ligne dlmwrite dans ton code. Faut plutot écrire tout en une fois à la fin.

    le faite d'ecrire valeur(1,k)=x est ce que cela veut dire creation d'un vecteur d'une ligne et plusieurs colonne
    exactement. En général on "déclare" un vecteur avant de faire la boucle si on sait déjà quelle taille il aura (question de "propreté" du code), mais en l'occurrence on sait pas vu qu'il aura k colonnes. Pour ton info, si tu sais déjà qu'il va en avoir 20 par exemple, tu peux créer un vecteur de 0 comme ca:
    vecteur=zeros(1,20);
    ou un vecteur de 1 comme ca:
    vecteur=ones(1,20);
    ou un vecteur de -27 comme ca:
    vecteur=-27*ones(1,20);
    etc.

    Pour afficher côte à côte les itérations et les valeurs:
    1) sauvegarde aussi les itérations k dans un vecteur après la ligne k=k+1:
    Code:
    iterations(1,k)=k;
    2) une fois sorti de la boucle, mets tes deux vecteurs dans une matrice M à 2 colonnes:
    M(:,1)=iterations';
    M(:,2)=valeurs';
    là ce qu'on a fait c'est mettre toutes les valeur d'iterations dans la 1e colonne de M et toutes celles de "valeurs" dans la 2e. L'apostrophe après iterations pour pour transposer le vecteur. On avait un vecteur-ligne (1 ligne k colonnes), on le transpose en vecteur-colonne puisque qu'on le met dans une colonne de M. Pourquoi pas faire M(1,: )=iterations ? Tu peux aussi, mais je trouve plus pratique de lire un fichier avec les valeurs par ligne.
    Donc au final on a une matrice de taille (k lignes 2 colonnes) qu'on veut sauver dans un fichier output.txt par exemple:
    Code:
    dlmwrite('output.txt', M, 'delimiter', '\t', 'precision', 4);
    j'ai directement pris ca dans la doc de la fonction dlmwrite. Ca va te sauver M en espaçant la 2e colonne par une tabulation et avec une précision à 4 chiffres.
    J'ai testé le code suivant:
    Code:
    k=0;
    x_lower=1;fa=-4; 
    x_upper=3;fb=240;
    while abs((x_lower-x_upper))>0.01
    x=(x_lower+x_upper)/2;f = 10*x.^3-2.*x.^2-12;
    if (f*fb)<0
    x_lower=x;fa=f;
    else
    x_upper=x;fb=f;
    end
    k=k+1;
    iterations(1,k)=k;
    valeurs(1,k)=x;
    end
    
    M(:,1)=iterations';
    M(:,2)=valeurs';
    dlmwrite('output.txt', M, 'delimiter', '\t', 'precision', 4);
    J'ai obtenu ca dans mon fichier:
    Code:
    1	2
    2	1.5
    3	1.25
    4	1.125
    5	1.188
    6	1.156
    7	1.141
    8	1.133
    La pie niche-t-elle haut ? Oui, la pie niche haut.

  7. #6
    invite78b1557a

    Re : affichage2 matlab fiatlux

    salut je vous fatigue avec moi vu que j suis debutant j'ai repris le script et il me donne un message d'erreur sgnalé en fin du script exactement au niveau de la derniere ligne (dlmwrite........) j ne voit pas ou est le probleme j vous signale seulement que le matlab que j'utilise est la version 6 est ce que c'est a cause de ca? merci une autre fois fiatlux

  8. #7
    fiatlux

    Re : affichage matlab

    pas de problème .
    le message d'erreur dit quoi exactement?
    La pie niche-t-elle haut ? Oui, la pie niche haut.

  9. #8
    invite78b1557a

    Re : affichage3 matlab

    bonjour j'ai repris le script est voici le message d'erreur tel quelmon script j l'ai nomé fiatlux et le fichier output.txt je l'ai crée avant l'execution



    ??? Error using ==> dlmwrite
    Too many input arguments.

    Error in ==> C:\MATLAB6p1\work\fiatlux.m
    On line 18 ==> dlmwrite('output.txt', M, 'delimiter', '\t', 'precision', 4);

    >>

  10. #9
    invite78b1557a

    Question Re : affichage matlab4

    rebonjour aprés que je vous ai envoyé le message d'erreur j'ai tenté un seconde fois la solution que j'ai trouvé pour avoir le méme affichage que le votre c'est mettre(dlmwrite('output.txt', M,' ');
    c'est la seule maniere que j'ai trouvé mais pourquoi cet ecriture(dlmwrite('output.txt' , M, 'delimiter', '\t', 'precision', 4); donne un message d'erreur j n'arrive pas a comprendre
    j'ai essayé aussi celle-la(dlmwrite('output.txt', M, 'D');que j'ai trouvé dans la doc et ca donne comme resultat suivant
    2D1.5
    3D1.25
    4D1.125
    5D1.1875
    6D1.1563
    7D1.1406
    8D1.1328
    c'est bizzard

  11. #10
    fiatlux

    Re : affichage matlab

    comme tu l'as dit, ca doit être un problème de version à mon avis.. J'ai la 7.9
    Sinon, simplement: dlmwrite('output.txt',M); ca t'affiche ça:
    1,2
    2,1.5
    3,1.25
    4,1.125
    5,1.188
    6,1.156
    7,1.141
    8,1.133
    La pie niche-t-elle haut ? Oui, la pie niche haut.

Discussions similaires

  1. [matlab] programmation : peut-on générer un arbre des fonctions d'un code Matlab ?
    Par inviteafe1cd13 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 09/07/2015, 10h12
  2. Passage de matlab 7.0 à matlab 7.9
    Par Gawel dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/01/2011, 10h20
  3. Question Matlab-compteur et affichage
    Par inviteb8477130 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 03/08/2010, 12h59
  4. Aide affichage en Matlab
    Par invitec66451ac dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 03/06/2006, 00h18
  5. [MatLab] Sb2Sl => Matlab classique = pb intégration.
    Par invite6e6d5361 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/08/2005, 21h02