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 :

Explications de code


Sujet :

Signal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Par défaut Explications de code
    Bonjour,

    est ce que quelqu'un peut me donner une explication du fonctionnement de ce programme
    si c'est possible pouvez-vous ajouter des commentaires
    (ce programme cree une note de piano mais j'arrive pas a comprendre cette partie du programme
    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
    for i=1:25 
        y(i,:)=1.5e-4.*Af(i,2).*exp(-3.5.*t)...
        .*heaviside(t).*sin(2.*pi.*f(i).*t);         )
     
    clear
    f0=493.88;
    f=f0.*(1:30);
     
    %harmonique
    Af=493.88*[
          0.8897,    2.0001;
        1.7834,    0.7463;
        2.6808,    1.2558;
        3.5879,    0.9798;
        4.4991,    0.3173;
        5.4244,    0.1693;
        6.3598,    0.2432;
        7.3115,    0.1432;
        8.2915,    0.0108;
        9.2715,    0.0494;
       10.2697,    0.0554;
       11.2902,    0.0431;
       12.3107,    0.0209;
       13.4324,    0.0131;
       14.5339,    0.0322;
       15.6657,    0.0071;
       16.8219,    0.0052;
       18.0165,    0.0010;
       19.2294,    0.0018;
       20.4908,    0.0008;
       21.7867,    0.0012;
       23.0825,    0.0009;
       24.4391,    0.0003;
       25.8565,    0.0003;
       27.2941,    0.0004;
       28.7114,    0.0001;
       30.2705,    0.0001;
       31.6271,    0.0001;
       32.3965,    0.0011;
       33.1862,    0.0006];   
    t=0:1/44.1e3:4;
    for i=1:25 
        y(i,:)=1.5e-4.*Af(i,2).*exp(-3.5.*t)...
        .*heaviside(t).*sin(2.*pi.*f(i).*t);
     
     
    end
     
    Y=sum(y);
     
     
    subplot(211)
    plot(t,Y)
    sound(Y,44.1e3)

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Par défaut
    Bonjour,

    quelles sont précisément les lignes de code qui te posent problèmes?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Par défaut
    Citation Envoyé par magelan Voir le message
    Bonjour,

    quelles sont précisément les lignes de code qui te posent problèmes?
    De la ligne 41 jusqu'à 44

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Par défaut
    Et bien la ligne 41 :
    permet de créer un vecteur de valeurs allant de 0 à 4 avec un pas de 1/44.1e3, et les 3 lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i=1:25 
        y(i,:)=1.5e-4.*Af(i,2).*exp(-3.5.*t)...
        .*heaviside(t).*sin(2.*pi.*f(i).*t);
    end
    permettent de calculer la fonction 1.5e-4.*Af.*exp(-3.5.*t).*heaviside(t).*sin(2.*pi.*f(i).*t) pour chaque valeur de Af. Chaque ligne de y correspondra à une valeur de Af et contient les valeurs de la fonction pour toutes les valeurs de t.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

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

    Pour compléter la réponse de magelan, t=0:1/44.1e3:4; créé le vecteur temps d'une durée de 4s avec une fréquence d'échantillonnage de 44.1kHz.
    • Le terme exp(-3.5.*t) permet l'atténuation du signal au fil du temps.
    • Le terme heaviside(t) n'a ici pas grande utilité ici vu que ton vecteur temps t d'entrée est positif. If ne fait que mettre des NaN sur les premières valeurs y(:,1).
    • Le terme sin(2.*pi.*f(i).*t) permet de générer le signal à la fréquence d'harmonique f(i).
    • Le terme Af(i,2) permet de fixer l'amplitude de l'harmonique correspondante.

    Tu as alors à la fin de la boucle une harmonique sur chaque ligne y(i,:) de ton tableau y.
    Ton signal final Y est la somme de toutes ces harmoniques Y=sum(y);.

    Remarque: Tu omets ici 5 harmoniques vu que ta boucle for ne va que jusqu'à 25 au lieu de size(Af,1) = 30

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Par défaut
    Citation Envoyé par magelan Voir le message
    Et bien la ligne 41 :
    permet de créer un vecteur de valeurs allant de 0 à 4 avec un pas de 1/44.1e3, et les 3 lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i=1:25 
    y(i,:)=1.5e-4.*Af(i,2).*exp(-3.5.*t)...
    .*heaviside(t).*sin(2.*pi.*f(i).*t);
    end
    permettent de calculer la fonction 1.5e-4.*Af.*exp(-3.5.*t).*heaviside(t).*sin(2.*pi.*f(i).*t) pour chaque valeur de Af. Chaque ligne de y correspondra à une valeur de Af et contient les valeurs de la fonction pour toutes les valeurs de t.
    Merci bien mon amis pour ton aide

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Par défaut
    merci mes amis pour votre aide cela m'a été très utile
    mais maintenant il faut que j'écrive ce code en c pour pouvoir l'intégrer dans une carte DSP
    je suis pas un débutant en langage c mais j'ai vraiment du mal a programmer ce code surtout avec :
    la matrice de harmonique ( Af )
    t=0:1/44.1e3:4;
    heaviside(t)

Discussions similaires

  1. Explication de code
    Par sacco dans le forum C
    Réponses: 2
    Dernier message: 12/04/2006, 23h13
  2. Explication de code
    Par claralavraie dans le forum Linux
    Réponses: 1
    Dernier message: 20/03/2006, 09h58
  3. Shell - Explication de code
    Par claralavraie dans le forum Linux
    Réponses: 13
    Dernier message: 13/01/2006, 16h03
  4. Explication de code - RE
    Par deedoo dans le forum Général Python
    Réponses: 23
    Dernier message: 29/07/2005, 14h00
  5. Explication de code simple
    Par Clad3 dans le forum OpenGL
    Réponses: 3
    Dernier message: 20/03/2005, 11h31

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