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 :

Lire automatiquement l'abscisse d'un point connaissant son ordonnée, sur une courbe [Débutant]


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Lire automatiquement l'abscisse d'un point connaissant son ordonnée, sur une courbe
    Bonjours à tous,

    J’utilise une fonction issue d’un script fournit par un de nos professeur. Suite à l’exécution de cette fonction j’obtiens une courbe. Je dois exécuter cette fonction à plusieurs reprises. J’obtiens ainsi 30 courbe. Pour chaque courbe je dois « lire » la valeur exacte de l’abscisse d’un point dont je connais l’ordonnée (qui est la même pour toutes les courbes). Je souhaite ensuite créer une matrice contenant le numéro des courbes et les abscisses lus. Je pourrais effectuer 30 fois la manipe avec le « data cursor », mais je souhaiterais automatiser ceci afin de pouvoir le faire sur un plus grand nombre de données rapidement.
    Pensez-vous que ce soit possible ?

    Merci beaucoup

  2. #2
    Membre habitué
    Profil pro
    Doctorant
    Inscrit en
    Mars 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 147
    Points : 196
    Points
    196
    Par défaut
    Le programme renvoie-t-il uniquement les courbes ou aussi les valeurs de l'ensemble des points ?

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    voici le script en question (pour moi c'est presque du chinois).
    je possède les données "xV" et je choisis "tmax". mais pour les données du graphe je ne sais pas comment y avoir accès.
    je tape juste autocorrelation(data(:,1),300); pour la courbe n°1 ainsi de suite pour les 30 courbes.

    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
    function [acM] = autocorrelation(xV, tmax, tittxt, type)
    % [acM] = autocorrelation(xV, tmax, tittxt, type)
    % AUTOCORRELATION computes and plots the autocorrelation of a
    % a time series
    % INPUTS:
    %  xV      : vector of a scalar time series
    %  tmax    : largest delay time to compute autocorrelation for
    %  tittxt  : string to be displayed in the title
    %  type    : if 'd' (for discrete) then data points are displayed 
    %            with dots, if 'c' lines are used, otherwise lines and 
    %            dots are used. 
    % OUTPUT:
    %  acM     : matrix of dimension (1+tmax) x 2, where at the first
    %            column are the lag times and at the second column the 
    %            corresponding autocorrelation.
    sizeofmark = 6;
     
    if nargin == 2
        type = 'b';
        tittxt = '';
    elseif nargin == 3
        type = 'b';
    end
     
    acM = zeros(tmax+1,2);
    acM(:,1) = [0:tmax]';
    n = length(xV);
    xm = mean(xV);
    yV = xV - xm;
    tmpV = xcorr(yV,tmax);
    xcovV = tmpV(tmax+1:2*tmax+1);
    acM(:,2) = xcovV / xcovV(1);
     
    figure(gcf)
    clf
    if type == 'd'
        plot(acM(:,1),acM(:,2),'.')
    elseif type == 'c'
        plot(acM(:,1),acM(:,2))
    else
        plot(acM(:,1),acM(:,2))
        hold on
        plot(acM(:,1),acM(:,2),'.','markersize',sizeofmark)
    end
    xlabel('lag \tau')
    ylabel('r(\tau)')
    title([tittxt,' Autocorrelation'])

  4. #4
    Membre habitué
    Profil pro
    Doctorant
    Inscrit en
    Mars 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 147
    Points : 196
    Points
    196
    Par défaut
    Visiblement, ce qui est tracé, c'est "acM".
    Normalement, si tu tapes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X=autocorrelation(data(:,1),300);
    , tu devrais récupérer les variables tracées.
    Fait un size(X) ensuite pour voir à quoi ressemble les variables et dis nous ce que tu as.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup Marterss! j'aurais du y penser. du coup ça me donne ça:

    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
     
    %FORECASTING PROJET 1
     
     
    %IMPORTATION DES DONNEES
    if(~exist('data', 'var'))
        data = xlsread('CH5.xls', 1, 'B2:T4001');
        measures = xlsread('CH5.xls', 1, 'B1:T1');
        t = xlsread('CH5.xls', 1, 'A2:A4001');
    end
     
     
    %PURGE DE LA TENDANCE
    detrended = detrend(data);
     
     
    % MOYENNE EN FONCTION DE LA POSITION
    average = mean(data,1);
    aver.detrend = mean(detrended,1);
    subplot(2,1,1)
    plot(measures, average);
    ylabel ('average')
    legend('original data')
    subplot(2,1,2)
    plot(measures, aver.detrend);
    xlabel('position measurement')
    ylabel ('average')
    legend('detrended data')
     
     
    %CHOIX DU DECALAGE GRACE A LA FONCTION AUTOCORRELATION - ORIGINAL DATA
     
    %pour x = 15
    a = autocorrelation(data(:,1),400);
    ai =find(a(:,2) < (1/exp(1)), 1);
    tta = a(ai, 1);
    ta= t(tta);
     
    %pour x = 16
    b = autocorrelation(data(:,2),250);
    bi =find(b(:,2) < (1/exp(1)), 1);
    ttb = b(bi, 1);
    tb= t(ttb);
     
    %pour x = 17
    c = autocorrelation(data(:,3),300);
    ci =find(c(:,2) < (1/exp(1)), 1);
    ttc = c(ci, 1);
    tc= t(ttc);
    ce n'est pas encore génial. je vais essayer de faire une boucle de x = 15 à x = 33 puis il faudra que je refasse pareil avec d'autre donnée et que je mette tous mes résultats (ta, tb, tc...) dans une matrice... je ne sais pas encore comment mais je cherche ;-)

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    finalement je ne suis pas parvenu a faire de boucle. mais j'ai réussit à obtenir les données que je voulais donc merci beaucoup pour votre aide précieuse!

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

Discussions similaires

  1. Afficher un point qui se déplace sur une trajectoire
    Par Renaud976 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 30/09/2012, 20h42
  2. Déplacer un point sur une courbe
    Par Xen956 dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 09/06/2012, 11h15
  3. [TChart] Déplacer un point sur une courbe
    Par paradise dans le forum Composants VCL
    Réponses: 2
    Dernier message: 27/11/2011, 12h12
  4. Déplacer un point sur une courbe
    Par Wassim123 dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/09/2007, 13h23
  5. Réponses: 2
    Dernier message: 27/03/2007, 18h58

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