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 :

Intégrale avec une borne variable


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Intégrale avec une borne variable
    Bonjour à tous !
    Voila, je viens vous voir car pour un projet je dois réaliser une intégration (voir PJ).

    Sachant que f(t) est un bruit blanc gaussien normalisé de moyenne nulle et d'intensité unité...

    Tout d'abord savez-vous générer une telle fonction sous Matlab ?
    (Je n'ai pas réussi à le faire et pour l'instant j'utilise la commande randn).

    Voila mon code:

    (lambda est un réel)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    t=linspace(0,100,101);
     
    for i = 1:t_max
    u=0:1:t(i);
    a=exp(lambda.*u).*randn(1,t(i)+1);
    integral(i)=trapz(u,a);
    end

    Comme vous vous en doutez il ne marche pas et Matlab m'affiche:

    
    ??? Error using ==> permute
    ORDER must have at least N elements for an N-D array
    
    Error in ==> trapz at 44
      y = permute(y,perm);
    
    Error in ==> Script at 65
    integral(i)=trapz(u,a);
    
    
    Si vous avez une quelconque idée pour réaliser cette intégration je suis fortement preneur !
    Merci d'avance et bonne soirée.


    (PS:Je possède la version 7.12.0.635 (R2011a))
    Images attachées Images attachées  

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    La fonction randn génère des variables aléatoires x(1)...x(n), tandis que trapz attends une fonction en argument. Il faut donc créer la fonction n|-> x(n), par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function f= timeserie2fun(x)
    function xfloorn= wrap(n)
    % vaut x(n) si n<=t<n+1 ; 0 si t<1 et x(end) si t> end
    if x<1; xfloorn=0
    elseif x>length(x); xfloorn= x(end);
    else; xfloorn= x(n);
    end
    f= @wrap
    end
    utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    x= randn(10,1);
    f= timeserie2fun(x)
    Cela étant, il doit pas être dur de faire le calcul à la main en divisant l'intégrale sur les intervalles [n,n+1[

    NB: je n'arrive pas a lire ta PJ, donc je n'ai peut être pas tout compris

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Je vois enfin ta PJ ! Es-tu sur que f(t) est la dernière valeur d'une séquence de nombre aléatoire ? N'est ce pas plutôt la densité d'une variable aléatoire ?

Discussions similaires

  1. Acceder à une variable avec une autre variable
    Par kisscoool dans le forum ActionScript 3
    Réponses: 4
    Dernier message: 21/05/2008, 12h52
  2. liste déroule paramétée avec une zone variable
    Par Patnel dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/04/2008, 15h32
  3. [Source] Comment arrondir un nombre avec une précision variable
    Par OhMonBato dans le forum Vos contributions VB6
    Réponses: 2
    Dernier message: 31/03/2007, 12h44
  4. Réponses: 1
    Dernier message: 08/11/2006, 12h16
  5. Réponses: 7
    Dernier message: 06/05/2006, 15h24

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