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

MATLAB Discussion :

programme avec operations sur complexe [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut programme avec operations sur complexe
    Bonjour tous,

    J'ai depuis plusieurs jours un programme qui me pose des problemes car il ne me donne pas les resultats que j'attendais, je pense donc qu'il y a un probleme mais je ne vois pas lequel....

    Serait il possible que vous le regardiez pour me dire ce que vous en pensez???

    C'est un programme avec des nombres complexes

    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    %Verifier le contenu :
    rf1_real=reaction_node{1};
    rf2_real=reaction_node{2};
    rf1_img=reaction_node{3}.*i;
    rf2_img=reaction_node{4}.*i;
     
    rf1=rf1_real+rf1_img;
    rf2=rf2_real+rf2_img;
     
    %rf1 et rf2 sont des nombres complexes chaque ligne correspond à une frequence de sortie et chaque colonne correspond à une amplitude
     
     
    %A et B sont les cosinus et sinus d'angles, on veut pour chaques frequences 
    %faire une projection
     n_max=nb_frequences;
     for n=1:1:n_max;
     for z=1:1:nombre_noeuds;
         rf_{n}(z)=rf1(n,z)*A(z)+rf2(n,z)*B(z);
         rf_radial{n}=rf_{n}';
     end 
     end
     
     %rappel en complexe
     %z=a+ib z'=a-ib donc le module=(z*z')^(1/2)
     %partie reelle a=(Z+Z')/2
     %partie img b=(Z-Z')/2i
     %argument n'est pas atan=b/a car cela est defini à k.pi pres or un
     %argument est toujours defini a 2.k.pi pres donc on utilise acos=a/module
     
     for n=1:1:n_max;
     for z=1:1:nombre_noeuds
     conjugue_rf_radial{n}(z)=conj(rf_radial{n}(z));
     module_rf_radial{n}(z)=(rf_radial{n}(z)*conjugue_rf_radial{n}(z))^(1/2);
     partie_reel{n}(z)=(rf_radial{n}(z)+conjugue_rf_radial{n}(z))/2;
     partie_imaginaire{n}(z)=(rf_radial{n}(z)-conjugue_rf_radial{n}(z))/(2*i);
     argument_degres_rf_radial{n}(z)=(asin(partie_imaginaire{n}(z)/module_rf_radial{n}(z)))*(180/pi);
     end
     end
     
     
     
      %MOYENNE
      %A present on va trier les données pour que X soit la representation de   %theta mais dans l'ordre
      %croissant, et Y les composantes de U qui sont ds l'ordre correspondant a X
      %on pourra ensuite facilement integrer avec TRAPZ
      n_max=nb_frequences;
      for n=1:1:n_max;
      [X1 I1] = sort(Theta);%sort permet de mettre ds ordre croissant, ici on met theta ds ordre
      Y1{n} = module_rf_radial{n}(I1); %puis on attribur cet ordr ds X1, Y1sera composantes aux theta ss perdre l'ordre
      for(z=1:1:nombre_noeuds) ;
         X1_rad(z)=X1(z)*(pi/180); %on passe X en radians pour l'integration
      end
      max_X1_rad=max(X1_rad);
      min_X1_rad=min(X1_rad);
      periode1=abs(max_X1_rad)+abs(min_X1_rad);
      module_RF_mean{n}=(1/periode1)*trapz(X1_rad,Y1{n});
      end
      n_max=nb_frequences;
      for n=1:1:n_max;
      [X2 I2] = sort(Theta);%sort permet de mettre ds ordre croissant, ici on met theta ds ordre
      Y2{n} = argument_degres_rf_radial{n}(I2); %puis on attribur cet ordr ds X1, Y1sera composantes aux theta ss perdre l'ordre
      for(z=1:1:nombre_noeuds);
         X2_rad(z)=X2(z)*(pi/180); %on passe X en radians pour l'integration
      end
      max_X2_rad=max(X2_rad);
      min_X2_rad=min(X2_rad);
      periode2=abs(max_X2_rad)+abs(min_X2_rad);
      argument_degres_RF_mean{n}=(1/periode2)*trapz(X2_rad,Y2{n});
      end
     
      for n=1:1:n_max;
          module(n)=module_RF_mean{n};
          argument(n)=argument_degres_RF_mean{n};
      end
     
    %ON TRACE A PRESENT module_RF_mean EN FONCTION DE LA FREQUENCE
    n_max=nb_frequences;
    for n=1:1:n_max;
    figure(21)
    hold on
    bar(n,module(n));
    title(' SPECTRE D''AMPLITUDE', 'color', 'b'); %titre du graphique
    xlabel('fréquence [Hz]');
    ylabel('module-amplitude [MPa]'); %legende abscisse et ordonnée
    end  
    %ON TRACE A PRESENT argument_RF_mean EN FONCTION DE LA FREQUENCE
    n_max=nb_frequences;
    for n=1:1:n_max;
    figure(22)
    hold on
    bar(n,argument(n));
    title(' SPECTRE DE PHASE', 'color', 'b'); %titre du graphique
    xlabel('fréquence [Hz]');
    ylabel('argument [degrès]'); %legende abscisse et ordonnée
    end  
     
    %reconstruirction de la fonction à partir des spectre
    %phy=arg(Pk)
    %|Pk|=module de Pk
    %p(t)=Pk.exp(jkwt)=|Pk|.exp(j(kwt+phy))=|Pk|.cos(kwt+phy)+|Pk|.j.sin(kwt+phy)
     
    z = 1; %initialisation d'un compteur pour les indices de P
    P = zeros(1,length(0:0.0005:2)); % on initialise P cela donne P=0, utilie pour 1ere boucle
    for t=0:0.0005:2;
        for n=1:1:n_max;
            P(z)=P(z)+module(n)*cos(2*pi*n*t+argument(n))+module(n)*i*sin(2*pi*n*t+argument(n));
        end
        z = z+1;
    end
    P_physique=real(P);
    T=[0:0.0005:2];
     
    figure(23)
    hold on
    plot(T,P_physique)
    title(' P(t) Physique', 'color', 'b'); %titre du graphique
    xlabel('temps   [s]');
    ylabel('P(t)   [MPa]')

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    ce qui me fait dire que j'ai un probleme est qu'en faisant le programme ci dessous qui ne traite que la partie reelle je n'obtiens pas tout à fait les meme resultats (seul l'amplitude varie)

    J'ai comparé ce programme avec le premier où je n'ai rentrée que des 0 pour la partie imaginaire.

    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
     
    rf1=rf1_real+rf1_img;
    rf2=rf2_real+rf2_img;
     
     
     for n=1:1:n_max;
     for z=1:1:nombre_noeuds;
         rf_{n}(z)=rf1_real(n,z)*A(z)+rf2_real(n,z)*B(z);
         rf_radial{n}=rf_{n}';
     end 
     end
     
     
     
      n_max=nb_frequences;
      for n=1:1:n_max;
      [X1 I1] = sort(Theta);%sort permet de mettre ds ordre croissant, ici on met theta ds ordre
      Y1{n} = rf_radial{n}(I1); %puis on attribur cet ordr ds X1, Y1sera composantes aux theta ss perdre l'ordre
      for(z=1:1:nombre_noeuds) ;
         X1_rad(z)=X1(z)*(pi/180); %on passe X en radians pour l'integration
      end
      max_X1_rad=max(X1_rad);
      min_X1_rad=min(X1_rad);
      periode1=abs(max_X1_rad)+abs(min_X1_rad);
      rf_radial_mean{n}=(1/periode1)*trapz(X1_rad,Y1{n});
      end
      n_max=nb_frequences;
     
    for n=1:1:n_max;
    amplitude_rf_radial_mean{1,n}=(rf_radial_mean{1,n}.^2).^(1/2);
    end
     
    %ON TRACE A PRESENT module_RF_mean EN FONCTION DE LA FREQUENCE
    n_max=nb_frequences;
    for n=1:1:n_max;
    figure(21)
    hold on
    bar(n,amplitude_rf_radial_mean{n});
    title(' SPECTRE ', 'color', 'b'); %titre du graphique
    xlabel('fréquence [Hz]');
    ylabel('module-amplitude'); %legende abscisse et ordonnée
    end  
    %ON TRACE A PRESENT argument_RF_mean EN FONCTION DE LA FREQUENCE
     
     
    n_max=nb_frequences;
    i = 1; %initialisation d'un compteur pour les indices de P
    P = zeros(1,length(0:0.0005:2)); % on initialise P cela donne P=0, utilie pour 1ere boucle
    for t=0:0.0005:2;
        for n=1:1:n_max;
            P(i)=P(i)+amplitude_rf_radial_mean{n}*cos(2*pi*n*t-0);
        end
        i = i+1;
    end
     
    T=[0:0.0005:2];
     
    figure(23)
    hold on
    plot(T,P)
    title(' P(t) Physique', 'color', 'b'); %titre du graphique
    xlabel('temps');
    ylabel('P(t)')

  3. #3
    Membre Expert Avatar de lecteur1001
    Inscrit en
    Mai 2009
    Messages
    1 526
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 1 526
    Par défaut
    Je ne sais pas si ça peut t'aider car je n'ai pas le temps de regarder en détail ton programme mais sache que l'opérateur MATLAB ' donne la transposée conjuguée d'un vecteur...
    À lire avant de poster : qu'est ce qu'un ECM (Exemple Complet Minimal) ?
    Règles des forums LaTeX. Quand votre problème est réglé, mettez votre discussion en
    Pour débuter en LaTeX je conseille fortement Tout ce que vous avez toujours voulu savoir sur LaTeX sans jamais oser le demander (merci Woody Allen ), livre téléchargeable gratuitement ou en vente dans le commerce pour 15 €

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    Citation Envoyé par lecteur1001 Voir le message
    l'opérateur MATLAB ' donne la transposée conjuguée d'un vecteur...
    qu'es ce que la transposée conjugué?
    => Il fait la transposé de mon vecteur et il prends le nombre complexe conjugué de chaques composantes?


    merci beaucoup en tous cas d'avoir pris le temps de repondre

  5. #5
    Membre Expert Avatar de lecteur1001
    Inscrit en
    Mai 2009
    Messages
    1 526
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 1 526
    Par défaut
    Citation Envoyé par 21did21 Voir le message
    => Il fait la transposé de mon vecteur et il prends le nombre complexe conjugué de chaques composantes?
    Oui c'est ça, il transpose et conjugue chaque composante il me semble. Fais un test rapide, tu pourras confirmer
    À lire avant de poster : qu'est ce qu'un ECM (Exemple Complet Minimal) ?
    Règles des forums LaTeX. Quand votre problème est réglé, mettez votre discussion en
    Pour débuter en LaTeX je conseille fortement Tout ce que vous avez toujours voulu savoir sur LaTeX sans jamais oser le demander (merci Woody Allen ), livre téléchargeable gratuitement ou en vente dans le commerce pour 15 €

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    Citation Envoyé par lecteur1001 Voir le message
    Oui c'est ça, il transpose et conjugue chaque composante il me semble. Fais un test rapide, tu pourras confirmer
    Tu avais bien raison!
    Ca doit etre un des problemes de mon programme MERCI BEAUCOUP!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/03/2009, 16h54
  2. demarrer un programme avec un bouton sur un gui
    Par sammyac dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 15/12/2008, 14h36
  3. linux et programmation reseaux avec TCL sur NS2
    Par hakemass dans le forum Linux
    Réponses: 0
    Dernier message: 09/12/2008, 18h56
  4. Recherche avec operation sur date
    Par mat-tech dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/08/2008, 11h13
  5. Réponses: 20
    Dernier message: 23/06/2006, 20h49

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