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 :

fonction resample sur matlab


Sujet :

Signal

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    96
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 96
    Points : 45
    Points
    45
    Par défaut fonction resample sur matlab
    bonjour,
    je ne sais pas si mon explication va être clair mais je vais essayer de vous expliquer mon problème.
    en fait j'ai un signal semi-périodique avec un motif qui se répète disons dans ce genre:

    Nom : 2ahs.png
Affichages : 913
Taille : 2,8 Ko

    je cherche au final à rendre mon signal périodique, donc j'ai détecté les pics et j'ai essayé de ré-échantillonner la distance entre chaque deux pics de façon à avoir la même distance partout.
    j'utilise la fonction resample de matlab
    mais voici un exemple d'un échantillonnage d'une période:

    Nom : 2xiu.png
Affichages : 874
Taille : 3,2 Ko

    Le problème c'est que ça me déforme mon signal , surtout le pic que j'ai le reste m'importe peu mais je veux garder le même aspect pour mon motif répétitif.
    Auriez vous une idée de ce que je devrais faire??
    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Une idée plus simple :

    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
    % Donnees initiales
    x = ...;
    y = ...;
     
    % Indices des pics
    idx = ...; 
     
    xper = [];
    yper = [];
     
    for n = 1:numel(idx)-1
     
        subx = x(idx(n):idx(n+1));
        suby = y(idx(n):idx(n+1));
     
        xi = linspace(subx(1), subx(end), 30);
        yi = interp1(subx,suby,xi);
     
        nper = numel(xper);
        xper = [xper (1:numel(yi))+nper];
        yper = [yper yi]; 
     
    end
     
    figure
    subplot(121)
    plot(x,y,'b-',x(idx),y(idx),'r*')
    subplot(122)
    plot(xper,yper,'b-');
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    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
    angelmn, peux tu fournir ton code et un jeux de données ?
    je n'utilise pas (encore) les time series , je vais m'y mettre ... du coup ça m’intéresse de regarde de plus près

    Dut : juste au cas ou angelmn soit intéressée par une interpolation de type Zoh (zero order hold), ta solution ne peut pas marcher
    (c'est pour moi le principale intérêt de la fonction resample, sinon autant utiliser interp1)

  4. #4
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    96
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    merci de m'avoir répondu. DUT je n'ai pas vraiment compris votre code je vais essayer de faire ca tout de suite. Sinon voici mon code:
    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
    %%%%%%%%%%%%detection des pics%%%%%%%%%%%
    j=1;
    for i=1:length(x)
        if x(i)>15
            T(j)=i;
            j=j+1;
        end
    end
    %%%%%%%%%%%réechantillonage%%%%%%%%%%%%%%%
    p=0;
    for i=1:length(T)-1
        s=x(T(i):T(i+1))% récupère le bout de signal entre 2 pics successifs
        sg(1+p:25+p)=resample(s,25,length(s))%reechatillone pour avoir une periode de 25
        p=p+25;
    end
    %%%%%%%%%%affichage%%%%%%%%%%%%%%%
    subplot(2,1,1)
    plot(x);
    axis([0 80 0 25])
    hold on 
    plot(T,x(T),'r*');
    subplot(2,1,2)
    plot(sg);
    et ça me donne ça:

    Nom : 91371949f3.png
Affichages : 794
Taille : 10,6 Ko

    ce qui me dérange le plus dans le résultat c'est que les maxima locaux ont changé et donc mon signal n'est pas devenu periodique. Moi je croyais pouvoir allonger la distance entre deux pics tout en les gardant intacts

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Donne nous les valeurs de x dans un fichier .mat (lui-même dans une archive zip ou rar)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  6. #6
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    96
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    le voici mon signal x ( ce n'est pas le signal final sur lequel je souhaite travailler c plus compliqué mais j'essai dejà de resoudre le problème avec ce signal)
    Merci de votre aide
    Fichiers attachés Fichiers attachés
    • Type de fichier : rar x.rar (232 octets, 67 affichages)

Discussions similaires

  1. fonction step sur matlab
    Par medriad dans le forum Signal
    Réponses: 2
    Dernier message: 03/06/2010, 22h14
  2. fonction continue sur Matlab
    Par harafado dans le forum MATLAB
    Réponses: 2
    Dernier message: 06/11/2009, 14h18
  3. La fonction quad2d sur MATLAB
    Par houcemc dans le forum MATLAB
    Réponses: 1
    Dernier message: 13/05/2009, 19h20
  4. recherche d'une fonction sur matlab
    Par omar.ayadi dans le forum MATLAB
    Réponses: 1
    Dernier message: 21/04/2008, 17h18

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