MATLAB : représentation graphique
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

MATLAB : représentation graphique



  1. #1
    lpnd

    MATLAB : représentation graphique


    ------

    Bonjour a tous,
    J'ai cette fonction qui est définie de [0;2pi] par ( c'est un signal carré)
    f(x)= E si x appartient a [0; pi/2]
    f(x)= -E si x appartient a [pi/2; 3 pi/2]
    f(x)= E si x appartient a [3 pi/2; 2pi]

    j'ai calculé les harmonies et les fondamentales et l'exo me demande de les tracer sur Matlab avc E=100
    les harmonies de cette fonction sont nulles et pour les fondamentales j'ai
    Code:
    b1=4E/pi
    b2=0
    b3= -4E/3 pi
    Pour b1 j'ai le script

    Code:
    t=[0:pi/14:2*pi];
    E=100
    b1=(4*E)/pi
    plot (t,b1)
    grid
    title('graphe de la première fondamentale')
    xlabel('x')
    ylabel('y')
    et pour b3

    Code:
    t=[0:pi/14:2*pi];
    E=100
    b3=(-4*E)/3*pi
    plot (t,b3)
    grid
    title('graphe de la troisième fondamentale')
    xlabel('x')
    ylabel('y')
    pour les deux graphes il n y'a que des pontiers très très fins alors que le graphe doit être une fonction sinus !

    et on ma proposer de déclarer que length(b1) égal à length(b3) égal à length(t) pour qu j trace le long de l'intervalle allant e 0 à 2 pi mais j'ai pas su si je dois la déclarer avant ou après l'expression de b1 et b3 ?

    -----

  2. #2
    Paraboloide_Hyperbolique

    Re : MATLAB : représentation graphique

    Bonsoir,

    Évidemment que Matlab vous trace ce genre de graphe: vous lui entrez des scalaires (des constantes de dimensions 1x1 dans Matlab). Ne vouliez-vous pas plutôt écrire:

    plot(t, sin(b3*t)); ?

    Si c'est le cas, vous devriez également changer d'échelle sur le graphe (passer à un intervalle beaucoup plus petit et/ou sérieusement diminuer le pas de temps qui est bien trop grand pour la période de la fonction).

    Enfin, je ne sais pas si c'est voulu (ou si c'est une faute de frappe), mais faites attention au fait qu'écrire b3 = (-4*E)/3*pi est compris en Matlab comme étant .

  3. #3
    lpnd

    Re : MATLAB : représentation graphique

    Pourquoi plot(t, sin(b3*t)); !!!
    j'ai pas mentionner que c'est une fonction sinus c'est vrai que le graphe va prendre l'allure sinus mais pourquoi je n'écris pas tout simplement plot (t,b3) ? et je mentionne bien sur que la longueur de b3 est égale a la longueur de t

  4. #4
    Paraboloide_Hyperbolique

    Re : MATLAB : représentation graphique

    Bonsoir,

    Ok, donc pas de plot(t, sin(b3*t)). Par contre quand vous dites que la la longueur de b3 est égale à la longueur de t, vous entrez an contradiction avec le code que vous fournissez.

    En effet, en faisant un copier-coller de celui, et en comparant les longueurs de ces deux variables, j'ai: length(b3) = 1 et lenght(t) = 29 (et ce n'est pas moi qui le dit, mais Matlab).

    Si vous voulez que b3 ait la longueur de t, vous pouvez écrire: b3 = -4*E/pi*ones(size(t));

    Par contre, plot(t, b3) ne donnera pas une fonction sinus avec cette technique, mais une constante (droite horizontale). A moins de modifier la fonction plot ou de définir autrement votre variable b3, je ne vois pas comment vous pourriez obtenir un graphe ressemblant à un sinus à partir du code que vous avez fournit sur ce forum...

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

    Re : MATLAB : représentation graphique

    D’accord maintenant j'ai bien compris
    mais j'ai une toute petite chose qui cloche
    quand je calcul b1 par matlab ça me donne 2.2222 alors que par calculatrice c'est 127.3239
    et la même chose pour b3 par matlab c’est -0.7407 et par calculatrice c'est -42.4413
    je voix pas ou je me suis trompé pour avoir des valeurs bien loin ?!!

  7. #6
    Paraboloide_Hyperbolique

    Re : MATLAB : représentation graphique

    Bonjour,

    Ok, content d'avoir pu éclairer votre lanterne sur ce point

    Concernant votre problème de valeur avec b1 et b3, il s'agit sûrement d'une erreur de formule quand vous avez défini b1 et b3 dans Matlab. Vérifiez surtout si vous avez placé toutes les parenthèses correctement et s'il n'en manque pas.

    Concernant b1, et avec votre code ci-dessus et E = 100, j'obtiens bien le résultat de votre calculatrice, à savoir 127.3240 (attention que Matlab affiche les résultats arrondis à la décimale la plus proche. Si vous voulez afficher plus de décimales, tapez "format long" dans le fenêtre de commande).

    Pour b3, j'obtiens aussi la valeur affichée par votre calculette (-42.4413) à condition de corriger votre code en plaçant des parenthèses supplémentaires: b3 = -4*E/(3*pi) au lieu de b3 = -4*E/3*pi. Je crois vous avoir fait une remarque à ce sujet.
    Dernière modification par Paraboloide_Hyperbolique ; 16/12/2012 à 14h31.

  8. #7
    lpnd

    Re : MATLAB : représentation graphique

    c'est bon j'ai réglé le problème des valeurs et même l'expression de b3 je lé réglé la très première fois que j'ai vu votre remarque
    la j'ai un autre souci je veux tracer le graphe de b1 et b3 dans la même fenêtre mais ça ne marche pas j'ai utilisé comme code le suivant:
    Code:
    E=100
    t=0:pi/15:2*pi
    b1=4*E/pi
    b3=-4*E/(3*pi)
    b=b1*cos(t)-1/3*(b3*cos(3*t))
    plot(t,b)
    hold on
    plot(t,b3,'r')
    grid
    title('le graphe de b1 et b3')

  9. #8
    Paraboloide_Hyperbolique

    Re : MATLAB : représentation graphique

    Bonsoir,

    Il y a plusieurs erreurs dans ce codes (une grande et des petites).

    La grande: dans plot(t, b3, 'r') vous essayez à nouveau d'afficher un scalaire (length(b3) = 1 qui est différent de length(t)).

    Les petites:

    - D'habitude on met un point virgule après une commande, pour éviter d'afficher systématiquement le résultat de celle-ci dans la fenêtre de commande.
    - Si vous utilisez la commande "hold on", il est de bon aloi, d'ajouter à la fin la commande "hold off".
    - Les commandes "plot(...)" pour les graphes à afficher dans les mêmes fenêtres doivent se trouver de préférence après "hold on" et avant "hold off".
    - La commande "grid" devrait être suivie de "on" ou "off".

    Enfin, une bonne pratique à appliquer est de légender son code afin de savoir ce qu'il fait. Sous Matlab, utiliser le caractère '%' qui indique que la suite de la ligne ne doit pas être interprétée par le programme.

    Une question: avez-vous déjà fait du Matlab auparavant et avez-vous des notions de programmation ? Si non, je vous conseille de lire ce petit guide Matlab: http://web.mit.edu/~paul_s/www/14.17...tlabBasics.pdf

    Voici une version corrigée de votre code. Je ne sais pas si c'est tout à fait ce que vous voulez faire, mais vous pouvez vous en inspirer:

    Code:
    %
    % Définition des variables et paramètres.
    %
    E=100;
    t=0:pi/100:2*pi;
    b1=4*E/pi;
    b3=-4*E/(3*pi);
    
    bb1 = b1*cos(t);             % Graphe de b1
    bb3 = -1/3*b3*cos(3*t); % Graphe de b3
    btot=b1*cos(t)-1/3*(b3*cos(3*t)); % Graphe de b1+b3
    
    %
    % Affichage des graphes.
    %
    hold on;  % Active le mode "graphes dans une même fenêtre".
    plot(t,btot, 'linewidth', 2);
    plot(t,bb1, 'g', 'linewidth', 2);
    plot(t,bb3,'r', 'linewidth', 2);
    grid on; % Affiche la grille.
    title('Le graphe de b1 et b3', 'fontsize', 14);  % Titre
    xlabel('Temps', 'fontsize', 14);                     % Légende de l'axe x.
    ylabel('Amplitude', 'fontsize', 14');                % Légende de l'axe y.
    hlegend = legend('b_{total}', 'b_1', 'b_3');   % Place une légende pour chaque graphe. hlegend: handle to legend, un genre de pointeur vers la légende.
    set(hlegend, 'fontsize', 14); % Change la taille de la légende en passant son pointeur à la fonction set.
    set(gca, 'fontsize', 14);     % Change la taille des caractères aux axes. (gca: "get current axes", genre de pointeur vers les axes).
    hold off; % Desactive le mode "graphes dans une même fenêtre".

  10. #9
    lpnd

    Re : MATLAB : représentation graphique

    waw c'est énormément sympa de votre part vraiment un grand merci
    merci d'avoir corrigé mes fautes d'une façon aussi simple
    et oui dans mes études on utilise le Matlab mais nos profs apparemment ne sont pas assez fort sinon on a pas fait beaucoup de séances pratiques c'est pour ça on n'a pas bon personnellement j'ai pas bien assimilé le Matlab et je vais certainement utilisé le guide que vous m'avez proposé

  11. #10
    Paraboloide_Hyperbolique

    Re : MATLAB : représentation graphique

    De rien, et pratiquez bien Matlab. Ce langage s'apprend en codant pas en faisant de la théorie. Même après plusieurs années de pratiques, je découvre encore des fonctionnalités nouvelles dans Matlab.

Discussions similaires

  1. Representation graphique sur matlab
    Par dalida1111 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 04/04/2012, 19h46
  2. Representation Graphique
    Par invite5768f8f7 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 15/11/2011, 16h15
  3. MATLAB: acquisition de donnée via une interface graphique matlab
    Par inviteaeee671e dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 08/05/2011, 16h54
  4. Représentation graphique
    Par invite46ba2680 dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 14/09/2010, 18h13
  5. Matlab: Représentation graphique
    Par invite2d9939ba dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 26/03/2008, 10h15