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 :

[resample] rééchantillonner les data et temps


Sujet :

Signal

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut [resample] rééchantillonner les data et temps
    Bonjour,

    J'ai un signal DATA (20Hz) avec un vecteur temps associé TIME

    j'aimerais rééchantilloner mon signal en 2Hz

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATA_resample=resample(DATA,2,20)
    seulement il faut rééchantilloner le temps également mais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TIME_resample=resample(TIME,2,20)
    donne n'importe quoi car j'imagine que la fonction resample n'aime pas les fct linéaires (il doit spliner quelque part..)

    J'essaye donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [DATA_resample, time_resample]=resample(DATA, TIME, 2,20)
    mais me retourne l'erreur:

    Error using resample>nonUniformResample (line 142)
    You must specify the down-sampling parameter Q in conjunction with the up-sampling parameter P.

    Error in resample (line 116)
    [varargout{1:max(1,nargout)}] = nonUniformResample(method,varargin{:});


    alors j'essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [DATA_resample, time_resample]=resample(DATA, TIME,fs, 2,20)

    avec fs=1 ou 1/86400 mais quoique je prenne le time_resample n'est plus un vecteur mais représente une seule valeur..


    Comment bien rééchantillonner un signal avec son temps associé?

    Merci d'avance.
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Salut,
    Pourquoi ne fais tu pas une décimation ?

    Si ton signal a été échantillonné à 20Hz et que tu veux le rééchantillonner à 2 Hz, il suffit de prendre 1 échantillon sur 10 et ça c'est de la décimation.

    Il faut évidemment faire pareil avec le vecteur temps bien que ce dernier n'ait pas grand intérêt puisque tu sais que chaque échantillon est espacé 0,5s
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #3
    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,

    Les oscillations obtenues en sortie de reample(TIME...) viennent du filtrage anti-repliement réalisé par la fonction (cf. le premier exemple : https://fr.mathworks.com/help/signal/ref/resample.html)

    D'après https://fr.mathworks.com/help/signal/ref/resample.html il n'est pas possible de ne fournir que les arguments x, tx, p et q à la fonction, d'où le renvoi d'une erreur lorsque tu fais [DATA_resample, time_resample]=resample(DATA, TIME, 2,20).

    [y1, t1] = resample(y2, t2) est utile en particulier lorsque les mesures y2, réalisées aux temps t2 ne sont pas réalisées avec un pas de temps fixe. Dans ce cas, resample les mesures avec une fréquence d'échantillonnage fixe, définie de manière à ce que y1 ait la même longueur que y2 et que les mesures se fassent sur la même plage de temps. Finalement : t1 == linspace(t2(1), t2(end), length(t2)) ; (si t2 est monotone).

    Pour faire un re-sampling à 2 Hz, tu peux simplement faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Fs = 2 ;
    [y1, t1] = resample(DATA, TIME, Fs);
    Si les effets de bords du au filtre posent problème et qu'il n'y a pas de risque d'aliaising, outre la solution proposée par Vincent, il est aussi possible de passer par la fonction interp1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    TIME = 0:1/20:8 ;
    DATA = sin(TIME*2*pi*0.25) ;
    Fs = 2 ; % new sampling freq. in Hz
    t1 = TIME(1):1/Fs:TIME(end); 
    y1 = interp1(TIME, DATA, t1) ;
    figure
    plot(TIME, DATA, '.', t1, y1, 'sq')
    legend('Input data', 'interpolated data')

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Merci à vous 2 !
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  5. #5
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    Citation Envoyé par Newenda Voir le message
    J'ai un signal DATA (20Hz) avec un vecteur temps associé TIME
    je trouve les objets timeseries ou timetable très pratiques pour ce genre de problème d'échantillonnage

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/06/2018, 19h47
  2. Réponses: 1
    Dernier message: 19/03/2006, 15h35
  3. Java et les applications embarquées temps reel
    Par KarimOuldamar dans le forum Développement Mobile en Java
    Réponses: 2
    Dernier message: 26/12/2005, 10h19
  4. Comment utiliser les Data Modelers
    Par mqsi dans le forum Rational
    Réponses: 2
    Dernier message: 18/10/2005, 12h28

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