Rechercher : dans
Par :

[Matlab] Différence entre deux courbes

Dernière réponse le 22 jan 2009 à 10:27:42 malokox, le 23 jun 2008 à 21:34:52 
 Signaler ce message aux modérateurs

Bonjour,
voici mon probleme :
avec matlab, j'ai tracé deux courbes en fonction du temps à partir de données.
Je voudrais avoir la différence entre ces deux courbes. J'utilise la fonction datenum pour l'echelle du temps.
Le problème est le suivant : l'une des courbes est définie a partir de 18000 données et quelques, l'autre à partir de seulement 1400.
J'aimerais obtenir une courbe approchée de la différence, mais pour faire la différence entre deux matrices, il faut que celles ci aient la meme taille. J'aimerais supprimer des données dans la matrice la plus grande, et l'adapter afin de pouvoir lui soustraire la premiere matrice.
Savez vous comment faire?

Une autre solution serait de récupérer des données approchées directement à partir de la courbe.
Merci

Configuration: Windows XP
Firefox 2.0.0.14

Meilleures réponses pour « [Matlab] Différence entre deux courbes » dans :
Représentation des courbes sous Matlab VoirLa fonction plot permet essentiellement de tracer des courbes sous Matlab. Dans cette astuce, nous allons essayer de détailler le fonctionnement de cette commande. Simple utilisation Vecteur Matrice Vecteur en fonction d'un autre Autres...
Concaténer les vecteurs ou les matrices sous Matlab VoirL'opération de concaténation des variables de Matlab consiste à regrouper ces variables dans une seule (vecteur ou matrice). Exemple : |2 3 4| X= |1 2 5| |0 2 7| Avec : |9 6 8| Y= |5 6 2| |3 2 1| Donne...
La vectorialisation sous MatLab VoirVectorialisation sous Matlab Sommaire I. Le logiciel MatLab II. Configuration matérielle pour les tests III. Comment vectorialiser un calcul IV. Expérience sur un exemple concret IV.1. Exemple concret choisi IV.2. Programme non...

1

qwsxdcfvgbhnj, le 23 jun 2008 à 21:45:14

Il suffit que tu prennes un point sur (18000/1400) de ton premier vecteur. Tu peux faire cela assez facilement avec une boucle for.

Répondre à qwsxdcfvgbhnj

2

ahmed, le 23 jun 2008 à 21:49:44

Cours de matlab

Répondre à ahmed

3

malokox, le 23 jun 2008 à 21:52:37

C'est ce que j'ai essayé de faire, en utilisant data(1:18000/1400:16800,9) (ou data est le nom de ma variable), mais il y a un décalage, a cause des démarrages des courbes je pense. Meme en bidouillant, je n'ai pas pu l'enlever.
Je cherchais donc une fonction automatique.

Répondre à malokox

4

qwsxdcfvgbhnj, le 23 jun 2008 à 21:58:09

Le pb c'est que 18000/1400 n'est pas un nombre entier. Dans l'ideal il faudrait faire une interpolation

Répondre à qwsxdcfvgbhnj

5

 khunlun, le 22 jan 2009 à 10:27:42

Bonjour,

J'arrive sûrement après la bataille et j'en suis désolé.

Pour ton problème, il y a quelque chose d'assez simple à faire.
Tu peux faire une intersection sur les temps des deux courbes.
Ensuite tu gardes les valeurs associées à ces temps-là.
Une fois ceci fait, tu peux faire la différence des deux courbes (tes deux vecteurs ont alors la même taille).
Et tu fais une interpolation du résultat pour avoir une approximation.

Bonne journée

Répondre à khunlun
Collection CommentÇaMarche.net