[MATLAB] définition de la fct de tranfert
Répondre à la discussion
Affichage des résultats 1 à 23 sur 23

[MATLAB] définition de la fct de tranfert



  1. #1
    invitee2f3230c

    Wink [MATLAB] définition de la fct de tranfert


    ------

    salut
    je suis en traine de programmer un programme .m qui permet de tracer les diagrammes de bode (Gain + phase ) .
    la fct sera tjrs sous la forme canonique :
    h(jw)=(An*j*w^n+An-1*j*w^n-1+........+A0)/(Bm*j*w^m+Bm-1*j*w^m-1+........+B0);
    avec n le degré de numérateur et m le degré du dénominateur (n<m tjrs)
    je suis encore au 1 stade c à d le fichier .m qui permet de générer la fct ,je prévois déjà lire les données (An..An-1..A0 et puis Bm..Bm-1..B0) bon je pense que c'est facile uen simple boucle suffira !
    mais le problème que je n'arrive pas à ressembler touts ces données enfin de donner la fct de transfert !

    si vous avez une idée je ne dirai pas non
    --

    -----

  2. #2
    invite5c27c063

    Re : [MATLAB] définition de la fct de tranfert

    Question bete au prealable...

    Y a-t-il une raison de reinventer la roue plutot que de faire simplement quelque chose comme :

    Code:
    G = ft([An An-1 ... A0],[Bm Bm-1 .... B0]);
    bode(G)

  3. #3
    invitee2f3230c

    Re : [MATLAB] définition de la fct de tranfert

    mais la fct de transfert est sous la forme d'un raport et n'oubliez pas que je dois ajouter le 'j' et la variable w ou la fréquence !

  4. #4
    invite5c27c063

    Re : [MATLAB] définition de la fct de tranfert

    Je n'oublie pas mais, une fois encore, et en vous laissant tout loisir de reprogrammer vous-meme ce qui existe deja, je suggere d'utiliser les fonctions existantes.

    Ex pour

    Code:
    H = tf([4], [1 2 10]);
    bode(H)

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

    Re : [MATLAB] définition de la fct de tranfert

    Code:
    G = ft([An An-1 ... A0],[Bm Bm-1 .... B0]);
    bode(G)
    oups est ce qu'on a le droit de mettre dans un programme An An-1 ... A0!!!
    je pense que c'est mieux de faire :
    Code:
    G = ft(n,m);
    bode(G)
    n=étant le degré du numérateur ;
    m=étant le degré du dénominateur ;


    que pensez vous ?

  7. #6
    invitee2f3230c

    Re : [MATLAB] définition de la fct de tranfert

    aucune réponses

    please aidez moi !

  8. #7
    invitec35bc9ea

    Re : [MATLAB] définition de la fct de tranfert

    Euh! On t'a déja donné la réponse. il faut un minimum de travail de ta part. regarde dans le help comment utiliser la fonction tf, mais Pat t'a déja donné la réponse, je vois pas ce que tu veux de plus

  9. #8
    invitee2f3230c

    Talking Re : [MATLAB] définition de la fct de tranfert

    Euh! On t'a déja donné la réponse. il faut un minimum de travail de ta part. regarde dans le help comment utiliser la fonction tf, mais Pat t'a déja donné la réponse, je vois pas ce que tu veux de plus
    vous auriez pu le dire de façon gentil !

    je n'ai pas pensez que la c'est une fct pré-définie,d'ailleurs PAT ne m'a pas mentionner qu'elle est prédéfinie .
    en outre la fct est écrit différemment dans les deux réponses(#2,#4) ,ce qui m'a poussé à penser que c'est une fct à programmer .


    G = ft([An An-1 ... A0],[Bm Bm-1 .... B0]);
    je répète ma remarque :est ce qu'on a la possibilité de mettre An An-1 ... A0 dans un programme !
    autre chose , svp , est ce qu'on a pas la possibilité de mettre A tout court sachant que c'est une vecteur .

    merci pour votre participation

  10. #9
    invite5c27c063

    Re : [MATLAB] définition de la fct de tranfert

    Citation Envoyé par hindou90 Voir le message
    je n'ai pas pensez que la c'est une fct pré-définie,d'ailleurs PAT ne m'a pas mentionner qu'elle est prédéfinie .
    Ah bon ? Il me semblait avoir ecrit en #4

    Citation Envoyé par pat7111 Voir le message
    Je n'oublie pas mais, une fois encore, et en vous laissant tout loisir de reprogrammer vous-meme ce qui existe deja, je suggere d'utiliser les fonctions existantes.

    Citation Envoyé par hindou90 Voir le message
    autre chose , svp , est ce qu'on a pas la possibilité de mettre A tout court sachant que c'est une vecteur .
    oui

    pour reprendre mon exemple precedent, c'est equivalent a

    Code:
    num = [4]
    den = [1 2 10]
    H = tf(num, den)
    Ca doit d'ailleurs etre la syntaxe sous laquelle la fonction tf est presentee dans l'aide de Matlab qui, comme le suggere ABN84, est souvent d'une lecture saine et instructive.

  11. #10
    invitee2f3230c

    Re : [MATLAB] définition de la fct de tranfert

    Citation:
    Envoyé par hindou90 Voir le message
    je n'ai pas pensez que la c'est une fct pré-définie,d'ailleurs PAT ne m'a pas mentionner qu'elle est prédéfinie .
    Ah bon ? Il me semblait avoir ecrit en #4

    Citation:
    Envoyé par pat7111 Voir le message
    Je n'oublie pas mais, une fois encore, et en vous laissant tout loisir de reprogrammer vous-meme ce qui existe deja, je suggere d'utiliser les fonctions existantes.
    croyez moi ,je ne l'ai pas bien vu !
    Code:

    num = [4]
    den = [1 2 10]
    H = tf(num, den)
    bon ça un exemple ; mais si jamais je veux utiliser la fct tf ,en programmant est ce que j'ai la possibilité d'écrire :
    Code:
    H = tf(num, den)
    et que le num soit un vecteur déjà acquis :
    Code:
    for i=1:degrés_num
          num(i)=input('taper l'elemen');
    end

    merci d'avance

  12. #11
    invitee2f3230c

    Re : [MATLAB] définition de la fct de tranfert

    particpez svp ,montrez moi mes erreurs !

  13. #12
    invite5c27c063

    Re : [MATLAB] définition de la fct de tranfert

    Mais vous avez essaye au moins ?

  14. #13
    invitee2f3230c

    Re : [MATLAB] définition de la fct de tranfert

    le but c'est de créer un fichier scrpt qui permet de tracer les diagrammes de Bode (gain+phase).
    c'est dans ce sens ,que je ne veux pas utiliser des fichiers existants tel que bode ,bon j'ai déja commencé le travail ,tout marche bien ,
    sauf que j'ai petit souci avec fct de transfert .
    Pat m'a déjà mentionne la fct tf ,et bon j'ai posé la question:est ce possible de passer en argument (num) étant donné que num c'est un vecteur :
    Code:
    n=input('taper le degré du numérateur ');
    m=input('taper le degré du dénominateur  ');
    %lecteur des données %
    for i=0:n
        num(i)=input('taper élément');
    end 
    for i=0:n
        dem(i)=input('taper élément');
    end 
    h=tf(num,dem);
    est ce vrai?

    en ce qui concerne la variable(f ou w) ,pensez vous que je dois le demandé à l'utilisateur de le taper lors du lecteur des données ,nn?


    merci d'avance

  15. #14
    invite5c27c063

    Re : [MATLAB] définition de la fct de tranfert

    J'ai copie-colle votre code dans un editeur Matlab, l'ai teste et le monsieur m'a dit ce qui ne lui plait pas. Je suggere que vous fassiez de meme et debuggiez votre code.

  16. #15
    invitee2f3230c

    Wink Re : [MATLAB] définition de la fct de tranfert

    ok
    mais dites moi svp pour la variable (w) est ce que vous pensez que je dois le lire avec les données ou le régénère automatiquement ?
    merci

  17. #16
    invitee2f3230c

    Re : [MATLAB] définition de la fct de tranfert

    bon j'ai exécute le code ,(bien sur j'ai commue l'erreur de commence de 0) ,et j'ai ajouté un disp(h) à la fin ;
    lors de l'exécution tout va bien sauf que pour le disp j'ai ce message que je n'ai rein compris :
    tf object: 1-by-1

    s'agit il de quoi svp ?

  18. #17
    invitee2f3230c

    Re : [MATLAB] définition de la fct de tranfert

    salut
    voici mon code ,sauf qu'il lui manque un fichier FctTran.m que je ne l'ia pas encore terminé (c'est le fichier de la définition de la fct de transfert ) .
    Bon pour gagner du temps j'ai essaye de donner une fct quelconque et tester le reste de mon code :
    Code:
    clc;
    %la saisie de la fréquence d'echantillonage%
    fmin=input('frequence min/ frequence d echantionnage ');
    fmax=input('frequence max/ frequence d echantionnage ');
    % nombre de points
    n=input('Nombre de points =? ');
    logf =log10(fmin):(log10(fmax)-log10(fmax))/n:log10(fmax);
    
    f=10.^logf;
    %demaner la fonction%
    F=input('Taper la fct de transfert');
    %Gain%
    g=20*log10(abs(F));
    %Phase %
    p=angle(F);
    %tracé le Gain%
    subplot(2,1,1);
    semilogx(f,g);
    ylabel('Gain(dB)');
    xlabel('fréquencementre d échantillage');
    title('Diagramme de Bode de Gain ');
    grid on
    %trace de la phase %
    subplot(2,1,2);
    semilogx(f,p);
    ylabel('Phase (dB)');
    xlabel('fréquencementre d échantillage');
    title('Diagramme de Bode de Phase ');
    grid on
    mais le problème qu'il m'affcihe un figure (avec l'axe logarithmique +grid ...) mais il me trace aucune fct !!!!

    pensez vous que d'où vient l'erreur ?

    bon j'ai exécute le code ,(bien sur j'ai commue l'erreur de commence de 0) ,et j'ai ajouté un disp(h) à la fin ;
    lors de l'exécution tout va bien sauf que pour le disp j'ai ce message que je n'ai rein compris :
    tf object: 1-by-1

    s'agit il de quoi svp ?

  19. #18
    invite5c27c063

    Re : [MATLAB] définition de la fct de tranfert

    Bon, il y a un truc qui doit m'echapper, parce que pour ce que cela produit, je ne voit toujours pas l'interet de refaire cela a la main (meme si ca peut etre instructif...)

    Avec les commandes existantes, en 5 lignes (3, si on entre la fonction de transfert dans le .m), ca donne
    Code:
    num = input('Rentrez le numerateur entre crochets : ');%Par ex [1 2]
    den = input('Rentrez le denominateur entre crochets : ');%Par ex [1 2 10]
    
    G = tf(num, den);
    bode(G)
    grid

  20. #19
    invitee2f3230c

    Re : [MATLAB] définition de la fct de tranfert

    je dois créer ,moi même , un fichier .m qui permet de tracer les diagrammes de Bode (gain+phase) !
    mais essayez svp de voir où est l'erreur .

    je vous en pris essayer de m'aider ):

  21. #20
    invitee2f3230c

    Re : [MATLAB] définition de la fct de tranfert

    salut
    donc j'essaye tjrs de me s'en sortir
    bon je un tout petit ambigüité :
    si on un vecteur :
    num=An*w^n+An-1*w^n-1+......+A0;
    si je veux lire ce vecteur ,j'aurai besoin d'une boucle ,mais le problème :
    comment je peux procéder pour lire la totalité du vecteur sans augmenter la dimension(n'oubliez pas qu'on A0)?
    autre chose lors de la lecteur est ce que je veux commencer par A0 ou An*w^n?

    please aidez moi !

  22. #21
    invitee2f3230c

    Re : [MATLAB] définition de la fct de tranfert

    voici mon code de la définition de la fct de transfert:
    %de script permet de definir le fct de transfert %
    Code:
    degre_num=input('taper le de numérateur');
    degre_den=input('taper le de dénomiumérateur');
    %lecture des donnees%
    %commençons par le numérateur %
    n=degre_num+1;
    for i=1:n
        num(i)=('taper l element du numérateur');%lire les données a0...an,j'ai mis n+1 car on commence de a0%
    end     
    %genere le f et j à partirde A1%
    for i=2:(degre_num+1)
        fnum(i)=num(i)*j*f^(i-1);%pour tout le numérateur sauf a0 on va genere l'indice complexe(j) et la variable f  %
    end
    N=num(i)+fnum;% et puison combine les deux partie a0+fnum%
    %commençons par le dénominateur (idem travailler pour le denominateur % 
    for i=1:(degre_den+1)
        den(i)=('taper l element du numérateur');
    end     
    %genere le f et j à partirde A1%
    for i=2:(degre_den+1)
        fden(i)=den(i)*j*f^(i-1);
    end
    D=fden+den(i);
    %la fct de transfert%
    H=N/D; % H=fct de transfert %
    je fournis tjrs mon code en espérant trouver des aides mais....

    i don't give up

    j'attends tjrs !

  23. #22
    invitee2f3230c

    Re : [MATLAB] définition de la fct de tranfert

    bon j'ai corrigé qlq erreur ,et voici le nouveau code ,tout en esperant que qlq me répond :
    Code:
    f=1:0.1:10;
    n=input('taper le degre de numérateur ');
    m=input('taper le degre de denominateur');
    a=0;
    for i=1:n+1
        a(i)=input('taper  l element du munérateur ');
    end
    b=0;
    
    for i=2:n+1
        b(i)=a(i).*j.*(f.^(i-1));
    end
    N=a(1)+b;
    mais à l'instrution:
    Code:
    b(i)=a(i).*j.*(f.^(i-1));
    il m'affiche cette erreur :
    ??? In an assignment A(I) = B, the number of elements in B and
    I must be the same.

    Error in ==> fctTransefert at 11
    b(i)=a(i)*x;

    de quoi s'agit il svp ?

  24. #23
    invitee2f3230c

    Unhappy Re : [MATLAB] définition de la fct de tranfert

    salut
    je pense que c'était une erreur de dimension ,aprés qlq modification le code devient:

    Code:
    f=1:0.1:10;
    n=input('taper le degre de numérateur ');
    m=input('taper le degre de denominateur');
    a=0;
    for i=1:n+1 % n+1 car on commence de a0%
        a(i)=input('taper  l element du munérateur ');% la tolatité du vecteur (a0+...+an)end
    b=0;
    b(1)=a(1);
    for i=2:n+1
        b(i)=a(i).*j.*(f.^(i-1));%à partir de a(2) on commence à introduire le j et f la variable +le degrés %
    end
    N=b;%le numérateur c tt simplement b%
    %idem pour le denominateur%
    %la fonction de transfert% 
    disp(b);


    je vous en pris ,d'éssayer d'avoir avec moi d'où vient l'erreur ):

    voici l'erreur que matlab m'affiche :
    ??? In an assignment A(I) = B, the number of elements in B and
    I must be the same.

    Error in ==> fctTransefert_may_right at 11
    b(i)=a(i).*j.*(f.^(i-1));






    c'est l'erreur complet

Discussions similaires

  1. Matlab: définition et visualisation de fonction 3D
    Par invitec2c3c226 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 29/01/2010, 19h17
  2. l'addition graphique de 2 fct sur matlab
    Par invitee2f3230c dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 01/01/2010, 00h50
  3. coment tracer une fct en matlab en respectant la Df
    Par invitee2f3230c dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 17/11/2009, 17h16
  4. Fct de transfer Matlab
    Par invitec196cf59 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 29/08/2008, 15h34
  5. domaine de définition matlab
    Par jenoyend dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 29/12/2007, 15h23
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...