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

Signal Discussion :

Signal rectangulaire et capacité accordée [Débutant]


Sujet :

Signal

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 59
    Points : 39
    Points
    39
    Par défaut Signal rectangulaire et capacité accordée
    Bonjour à tous, j'aimerais pouvoir accordé le signal de charge et décharge d'une capacité sur un signal rectangulaire périodique mais je ne sais pas trop comment faire... En fait, à la deuxième boucle FOR, lorsque je calcule y1, au lieux de mettre dans la formule '-t(i)', il faudrait que mes 'i' soient en fait les valeurs contenues dans le vecteur t1 défini plus haut (qui correspond à une demi période...). Je ne sais pas si ce que j'explique est très clair...
    voici mon code:
    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
     
    %% Signal carré d'amplitude 9V avec la charge/décharge 
    %% de la capacité de l'oscillateur de référence.
     
    % Valeur de la résistance variable (en Ohms)
    R_var = 2.835e4;
     
    % Valeur de la résistance fixe (en Ohms)
    R_1 = 1e3;
     
    % Valeur de la capacité (en Farads)
    C = 1e-10;
     
    % Amplitude des signaux
    A = 9;
     
    % Constante de temps pour la charge de la
    % capacité (en secondes)
    tau_1 = C*(R_1+R_var);
     
    % Constante de temps pour la décharge de la
    % capacité (en secondes)
    tau_2 = C*R_var;
     
    % Rapport cyclique
    D = R_var/(R_1+2*R_var);
     
    % Intervalle de temps (en secondes)
    t = 0:5e-8:20e-6;
    t1 = 0: 5e-8:2e-6;         % une demi période
     
    % Fréquence du signal (en Hertz)
    f = 250000;
     
    % Equation du signal carré
    y2 = A.*square(2*pi*f*t,100*D);
     
    for i=1:length(t)
     
        if y2(i)<0
     
            y2(i)=0;
     
        end;
    end;
     
    % Charge et décharge de la capacité
     
    for i = 1:length(t)
     
        if y2(i) == A
     
            y1(i) = (4/3)*A-A.*exp(-t(i)./tau_1);     % Equation de charge
     
        else
     
            y1(i) = A.*exp(-t(i)./tau_2)-(1/3)*A;     % Equation de décharge
     
        end
     
     
    end
     
     
     
    plot (t,y2,'xb-',t,y1,'r-');
    xlabel('Temps(s)');
    ylabel('Tension (V)');
    title('Signal provenant de l''oscillateur de référence et de sa capacité');
    grid;
    Merci d'avance pour votre aide!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i=1:length(t)
        if y2(i)<0
            y2(i)=0;
        end;
    end;
    Peut être remplacé par y2(y2<0) = 0;
    Puis, en réduisant la taille des vecteurs d'un échantillon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Fe = 2e7;   % Fréquence d'échantillonnage
    N = 40;     % Nombre d'échantillons/demi-periode
    t = (0:10*N-1)/Fe;  % 5 périodes
    t1 = (0:N-1)/Fe;         % une demi période
    On peut utiliser la fonction repmat comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    % Charge et décharge de la capacité
    y1(~y2) = A*exp(-repmat(t1,1,5)/tau_2)-(1/3)*A;  % Equation de décharge
    y1(y2>0) = (4/3)*A-A*exp(-repmat(t1,1,5)/tau_1); % Equation de charge
    Pour comprendre mon code, tu peux regarder la Indexage logique

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 59
    Points : 39
    Points
    39
    Par défaut
    Ok d'accord, merci pour ta réponse je vais regarder ton lien.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 59
    Points : 39
    Points
    39
    Par défaut
    Le dernier code, avec les équations de charge et de décharge, je dois les mettre dans une boucle for? parce que y1 n'est pas de même longueur que t et donc il ne veut pas ploter le graph...

  5. #5
    Invité
    Invité(e)
    Par défaut
    As-tu remplacé la déclaration des vecteurs t1 ET t par le bout de code que je t'ai donné?
    Non tu ne dois pas utiliser de boucle, juste les deux lignes que je t'ai fourni.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 59
    Points : 39
    Points
    39
    Par défaut
    oui, j'ai remplacé par ce que tu m'as donné, mais il me mets cette erreur:
    ??? Error using ==> plot
    Vectors must be the same lengths.

    Error in ==> carreoscillateurINT at 49
    plot (t,y2,'xb-',t,y1,'r-');
    Je te remets mon code, au cas où j'aurais fait une bêtise en recopiant...
    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
    %% Signal carré d'amplitude 9V avec la charge/décharge 
    %% de la capacité de l'oscillateur de référence.
     
    % Valeur de la résistance variable (en Ohms)
    R_var = 2.835e4;
     
    % Valeur de la résistance fixe (en Ohms)
    R_1 = 1e3;
     
    % Valeur de la capacité (en Farads)
    C = 1e-10;
     
    % Amplitude des signaux
    A = 9;
     
    % Constante de temps pour la charge de la
    % capacité (en secondes)
    tau_1 = C*(R_1+R_var);
     
    % Constante de temps pour la décharge de la
    % capacité (en secondes)
    tau_2 = C*R_var;
     
    % Rapport cyclique
    D = R_var/(R_1+2*R_var);
     
    % Intervalle de temps (en secondes)
     
    Fe = 2e7;   % Fréquence d'échantillonnage
    N = 40;     % Nombre d'échantillons/demi-periode
    t = (0:10*N-1)/Fe;  % 5 périodes
    t1 = (0:N-1)/Fe;         % une demi période
     
    % Fréquence du signal (en Hertz)
    f = 250000;
     
    % Equation du signal carré
     
    y2 = A.*square(2*pi*f*t,100*D);
    y2(y2<0) = 0;
     
    % Charge et décharge de la capacité
     
    y1(~y2) = A*exp(-repmat(t1,1,5)/tau_2)-(1/3)*A;     % Equation de décharge
    y1(y2>0) = (4/3)*A-A*exp(-repmat(t1,1,5)/tau_1);    % Equation de charge
     
     
     
    plot (t,y2,'xb-',t,y1,'r-');
    xlabel('Temps(s)');
    ylabel('Tension (V)');
    title('Signal provenant de l''oscillateur de référence et de sa capacité');
    grid;

  7. #7
    Invité
    Invité(e)
    Par défaut
    Ton code marche très bien chez moi, un petit clear all peut-être dans ton workspace?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 59
    Points : 39
    Points
    39
    Par défaut
    Parfait, cela fonctionne bien aussi chez moi! Merci pour ton aide et probablement a bientot

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

Discussions similaires

  1. [Débutant] Signal rectangulaire d'un fichier wav ?
    Par da23ad dans le forum Signal
    Réponses: 9
    Dernier message: 10/06/2012, 21h40
  2. Signal d'une capacité borné
    Par wolf11 dans le forum Signal
    Réponses: 1
    Dernier message: 28/04/2011, 23h23
  3. Réponses: 4
    Dernier message: 01/12/2008, 09h03
  4. Création et filtrage d'un signal rectangulaire
    Par jena dans le forum Signal
    Réponses: 3
    Dernier message: 06/09/2007, 15h49
  5. [VB6] [MDI] Signaler la fermeture d'une fille à la mère
    Par cpri1shoot dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/04/2004, 08h57

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