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 :

affichage des coefficeints an et bn d une transforme de fourier


Sujet :

Signal

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut affichage des coefficeints an et bn d une transforme de fourier
    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
    clear; clc; close all;
    L=1;
    n=40;
    x=linspace(-L,L,n);
    dx=x(2)-x(1);
    %% Grafische Darstellung
    f=@(x) 32*x.*(x.^2-1);
    y=f(x);
    subplot(3,2,1),plot (x,y,'r');
    hold on;
    title('f(x)');
    %% symbolische Lösung
    syms xx n pi
    bn(n)=int((32*xx*(xx^2-1)*sin(n*pi*xx/L)), xx,-L,L);  %symbolische Funktion
    an(n)=int((32*xx*(xx^2-1)*cos(n*pi*xx/L)), xx,-L,L);  %symbolische Funktion
    bn(n)=simplify(bn(n));
    pretty(bn(n)) ;
     
    fft(xx)=0+0*xx;
       for n=1:40
           fft(xx)= fft(xx)+bn(n)*sin(pi*n*xx/L);   %symbolische Funktion
       end
       y=@(x) double(fft(x));
       subplot(3,2,2),plot(x,y(x),'b');
       title('symbolische Lösung');
    %% numerische Lösung 
     
    f=@(x) 32*x.*(x.^2-1);
    An= zeros(n,1);
    Bn= zeros(n,1);
    for x=-L:L
       for n=1:40   %integral
          An(n)=(2\L)*integral(f(x)*cos(n*pi*x/L),-L,L);
         % Bn(n)=(2.\L)*integral(f(x).*sin(n*pi*x/L),-L,L);
          %ft=An(n)*cos(pi*n*x/L)+Bn(n)*sin(pi*n*x/L);
       end
    end 
       y3=@(x) double(An(n))
       subplot(3,2,5),plot (x,y3,'b');
       title('An');

    j ai l erreur suivante que je n arrive pas resourdre pourriez vous me venir en aide ?

    Error using integral (line 82)
    First input argument must be a function handle.
    
    Error in Hausaufgabe2_Kelodjoue_Dominique (line 33)
          An(n)=(2\L)*integral(f(x)*cos(n*pi*x/L),-L,L);

  2. #2
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2019
    Messages : 90
    Points : 254
    Points
    254
    Par défaut
    Bonjour,

    Ce message se rapporte à la ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    An(n)=(2\L)*integral(f(x)*cos(n*pi*x/L),-L,L);
    qui plante pour x=-L=1 et n=1.
    L'aide de la fonction integrale indique que dans q = integral(fun,xmin,xmax), fun is the "Integrand, specified as a function handle, which defines the function to be integrated from xmin to xmax." Il doit donc s'agir d'une fonction (e.g. anonyme). par exemple @sin ou @(x) x.^2. Or : f(x)*cos(n*pi*x/L) est un scalaire (qui en l’occurrence vaut zéro). Une solution consiste à remplacer f(x)*cos(n*pi*x/L) par @(x)f(x)*cos(n*pi*x/L).

    Tu auras ensuite un problème lié au fait que pi est déclaré comme syms et non comme scalaire.

    Ensuite, il faudra gérer la dimension des éléments composant f(x)*cos(n*pi*x/L) lorsque la variable d'entrée x est un vecteur et non un scalaire : les multiplications matricielles donnent a priori des matrices.


    Conseils plus généraux :
    - mieux vaut éviter les noms de variables dans les fonctions anonymes qui soit également utilisées ailleurs dans le code : c'est délicat à suivre. Exemple : dans @(x)f(x).*cos(n*pi*x/L), le x est une variable interne, et non le x spécifié comme variable de boucle.
    - Je ne suis pas sûr que tu sois très au point sur la manière dont fonctionnent les boucles sous Matlab. for x=-L:L, .... end fait que x va prendre toutes les valeurs entières entre -1 et 1, soit -1, 0 et 1... Ici, x n'apparaissant pas dans la boucle, il n'a aucune influence sur son contenu et la boucle for x=-L:L, .... end calcule 3 fois la même chose.
    - de plus y3=@(x) double(An(n)) n'as pas de sens :
    * An est déjà un tableau de doubles
    * arrivé à ce point du programme, n a gardé la valeur qu'il avait au sortir de la boucle et vaut 40. Donc cette ligne est équivalente à y3=@(x) An(40) ;
    * x n'apparaissant pas dans l'expression, la valeru retournée par y3(x) ne dépend pas de x

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup j ai pu modifie mon programme il fonctionne maintenant.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/11/2008, 14h09
  2. Affichage des caractères nuls en début d'une chaine de caractère
    Par Saly2008 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/10/2008, 10h48
  3. Réponses: 3
    Dernier message: 10/12/2007, 22h48
  4. [XSLT] Affichage des balises xml en html via une xslt
    Par Eileen dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 20/04/2007, 15h53
  5. Affichage des infos après le choix d'une combobox
    Par manplum dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/08/2006, 10h31

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