2010-05-18 12 views
5

J'ai un vecteur de 358 nombres. Je voudrais faire une intégration numérique de ce vecteur, mais je ne connais pas la fonction de celui-ci.Comment est-ce que je fais l'intégration numérique d'un vecteur dans MATLAB?

Je trouve que nous pouvons utiliser trapz ou quad, mais je ne comprends pas vraiment comment intégrer sans la fonction.

+0

Jetez un oeil à ma réponse à une question similaire, où j'utilise trapz à intégrer: http://stackoverflow.com/questions/2641809/calculate- area-under-fft-graph-in-matlab/2641824 # 2641824 – Jonas

+0

Je vais ajouter ceci comme commentaire car c'est trop court pour être une bonne réponse. L'intégration sans utiliser les built-ins de MATLAB vous obligerait à avoir une méthode numérique à l'esprit pour l'utilisation. La méthode trapézoïdale est l'une des plus simples; vous trouvez simplement l'aire sous le graphe entre des points adjacents reliés par une ligne (en supposant un intervalle de l'axe des x de 1, puisqu'aucun intervalle n'a été mentionné dans la question). Sous une telle hypothèse, un schéma simple et naïf pour le vecteur "fx" serait (fx (2: end) + fx (1: end-1))/2. –

+0

Les schémas numériques utilisés par trapz et quad sont décrits dans la documentation dans une certaine mesure, vous pouvez les rechercher dans le fichier d'aide de MATLAB ou en ligne. Si vous souhaitez une description plus complète d'un algorithme simple, faites le moi savoir et j'ajouterai une réponse plus complète. –

Répondre

7

Vous n'avez pas besoin de connaître la fonction afin d'intégrer numériquement; c'est le point de trapz et quad. Il suffit de passer trapz votre vecteur. Voici a link to the documentation.

2

intégration Pensez à trouver aire sous la courbe, qui est formé par votre vecteur. Eh bien, ce n'est pas vraiment une courbe, mais une chaîne polygonale. Que fait la fonction TRAPZ, elle trouve la somme des aires de chaque trapézoïde formé par deux points voisins dans votre vecteur et leur projection sur l'axe X. Voir la documentation de la fonction, si vous avez une distance inégale entre vos points ou si la distance n'est pas égale à un.

Vous pouvez en savoir plus sur cette méthode, par exemple, sur Wikipedia.

8

Si vous connaissez l'espacement horizontal de votre vecteur, vous pouvez utiliser trapz afin de l'intégrer sans la fonction. Par exemple, pour intégrer y=sin(x) de 0 à 358 pi avec sections,

x=0:pi/357:pi; 
y=sin(x); 
area=trapz(x,y); 

Si vous utilisez juste trapz(y), vous obtiendrez un plus grand nombre, puisque la distance par défaut entre les points est supposée être 1. Ce problème peut être fixé en multipliant par la distance entre les points x:

area=pi/357*trapz(y);