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

Traitement du signal Discussion :

[Signal] Méthode pour augmenter le rapport signal/bruit


Sujet :

Traitement du signal

  1. #21
    Membre habitué Avatar de sango85
    Inscrit en
    Février 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2007
    Messages : 147
    Points : 161
    Points
    161
    Par défaut
    Pas de soucis pour comprendre le besoin d’un filtre (très) sélectif… Mais il y a un truc que j’ai du mal à piger…
    Citation Envoyé par ol9245
    si ton signal est a 20 Hz, tu fais comme te dit pseudocode de l'oversampling = tu sample ton signal à 1 kHz si possible.
    Les fréquences max de mon signal sont autour de 10 Hz… (J’ai donc d’ailleurs ramené ma fréquence d’échantillonnage à 25 Hz [dixit Shannon].).
    Bon, là, j’ai donc mon signal (avec une fréquence max à 10 Hz) noyé (pourquoi il sait pas nager lui ) dans mon bruit blanc (qui est autant présent aue mon signal entre 0 et 10 Hz.)
    Mais, que va m’apporter le suréchantillonnage ?!?
    (D’ailleurs, on parle de suréchantillonnage par interpolation, par resample de Matlab, ou par réplication bête et méchante du point ?)
    Je ne vois pas la subtilité… Désolé… Quelques précisions ?
    Matlab R2009b
    Forget the accents... sorry but qwerty ...

  2. #22
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par sango85
    D’ailleurs, on parle de suréchantillonnage par interpolation, par resample de Matlab, ou par réplication bête et méchante du point ?
    Rien de tout ca. On parle de choisir une frequence d’échantillonnage très superieure au " 2 fois frequence Max " de Shanon. Par exemple, pour un signal original de frequence Max 10Hz, tu prends une frequence d’échantillonnage et 1000Hz (donc fois 100). Tu as donc 50 fois plus d'echantillons que necessaire d'apres Shanon.

    Tu peux alors sous echantilloner 50 fois en faisant une moyenne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                            49
    Sample20Hz(t) = 1/50 * Somme [ Sample1000Hz(50*t + k) ]
                            k=0
    En faisant cette moyenne, et par nature d'un bruit blanc (moyenne nulle), tu fais resortir le signal original.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #23
    Membre habitué Avatar de sango85
    Inscrit en
    Février 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2007
    Messages : 147
    Points : 161
    Points
    161
    Par défaut
    Merci beaucoup, Je reprends espoir... (peut-être pas pour très longtemps mais bon).. Je m'y attèle de suite et je vous tiens au courant...
    Matlab R2009b
    Forget the accents... sorry but qwerty ...

  4. #24
    Blue_Strike
    Invité(e)
    Par défaut
    1+, en général, la fréquence d'échantillonnage dans la pratique doit être supérieure 10 fois au minimum de la fréquence du signal à échantillonner (et sup à 2 fois seulement théoriquement).

    en plus, je vois que le filtrage est le meilleur moyen pour récuperer ton signal.

    A+
    Dernière modification par Blue_Strike ; 09/06/2007 à 11h04. Motif: orthographe

  5. #25
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    oui, et si la bete moyenne apporte un plus notable a ton probleme, alors avec Savisky-golay (orthographe exacte ?) tu vas améliorer considérablement davantage car tu va pouvoir utiliser une fenetre d'echantillonage qui fait au moins 1/2 longueur d'onde (ce qui, avec un filtre moyenne ecrabouille completement le signal).
    OL
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  6. #26
    Membre habitué Avatar de sango85
    Inscrit en
    Février 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2007
    Messages : 147
    Points : 161
    Points
    161
    Par défaut
    Merci pour toutes ces réponses... Mais malheureusement, cette méthode :
    Citation Envoyé par pseudocode
    Tu peux alors sous echantilloner 50 fois en faisant une moyenne:

    Code :
    49
    Sample20Hz(t) = 1/50 * Somme [ Sample1000Hz(50*t + k) ]
    k=0
    En faisant cette moyenne, et par nature d'un bruit blanc (moyenne nulle), tu fais resortir le signal original.
    le résultat n'est pas meilleur. Je crois avoir trouvé la raison... Le problème, c'est qu'avec cette technique de suréchantillonnage, mon rapport signal/bruit serait amélioré si et seulement si mon signal comme mon bruit était dans la bande de fréquence de départ.
    Mais dans mon cas, certes le signal est dans la bande de fréquence de départ, mais mon bruit est blanc sur toute la bande, donc le suréchantillonnage n'améliore rien du tout : cf la fft en fichier joint.

    Donc une méthode de filtrage aussi performante qu'elle soit (Savitsky-Golay) n'améliore rien de plus...
    Images attachées Images attachées  
    Matlab R2009b
    Forget the accents... sorry but qwerty ...

  7. #27
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par sango85
    Le problème, c'est qu'avec cette technique de suréchantillonnage, mon rapport signal/bruit serait amélioré si et seulement si mon signal comme mon bruit était dans la bande de fréquence de départ.
    Ah... ?

    Moi je dirais plutot: le SNR s'améliore si et seulement si le bruit est blanc et qu'on moyenne beaucoup d'echantillons.

    Es-tu sur que ton bruit est blanc ? si oui, essaye de prendre beaucoup plus d'echantillons (avec un SNR de -50db, beaucoup d'echantillons ca veut dire vraiment BEAUCOUP. )
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #28
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Je ne vois pas comment le suréchantillonage pourrait améliorer le rapport S/B, mis à part le fait de diminuer le bruit de quantification et dans le cas présent, ce n'est certainement pas un terme qui intervient dans le S/B observé.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  9. #29
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par diogene
    Je ne vois pas comment le suréchantillonage pourrait améliorer le rapport S/B, mis à part le fait de diminuer le bruit de quantification et dans le cas présent, ce n'est certainement pas un terme qui intervient dans le S/B observé.
    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
     
    Observation(t) = Signal(t) + BruitBlanc(t)
     
    et
     
    Sample(t) = 1/N * Somme [ Observation(t + a*k/N) ]
                       k=0
     
    avec a = 1/freq_max;
     
              N-1
     = 1/N * Somme [ Signal(t+ a*k/N) + BruitBlanc(t+ a*k/N) ]
              k=0
     
              N-1                                  N-1
     = 1/N * Somme [ Signal(t+ a*k/N) ]  +  1/N * Somme [ BruitBlanc(t+ a*k/N) ]
              k=0                                  k=0
    La 1ere somme est proche de Signal(t) car on se place dans un intervale (t,t+1/freq_max) dans lequel le signal ne varie pas.

    La 2eme somme est proche de 0 car la moyenne d'un bruit blanc est nulle
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  10. #30
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pseudocode
    La 1ere somme est proche de Signal(t) car on se place dans un intervale (t,t+1/freq_max) dans lequel le signal ne varie pas.

    La 2eme somme est proche de 0 car la moyenne d'un bruit blanc est nulle
    Dison que l'écart type du bruit est divisé par racine(N). C'est efficace si N est très grand. Justement, Stavitsky-Golay te permet d'utiliser un N grand, car ton signal de k à k+N n'a plus besoin d'être réputé constant : il lui suffit d'être réputé polynomial, ce qui change tout (tu augmente le degré du polynôme pour agrandir ta fenêtre).

    Quand j'étais gamin il y avait les supermarché Mamouth.
    Ils faisaient leur pub sur "Mamouth écrase les prix" (c'était fin ...)

    Eh bien aujourd'hui, on a Savitsky-Golay :
    Savitsky-Golay écrase le bruit.
    OL
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  11. #31
    Membre habitué Avatar de sango85
    Inscrit en
    Février 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2007
    Messages : 147
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par ol9245
    l'écart type du bruit est divisé par racine(N). C'est efficace si N est très grand
    Pourquoi appliquer une méthode compliquée (qui selon moi ne fonctionne pas, si vous voulez je vous poste le script Matlab correspondant pour ceux que ça intéresse...) alors que l'on peut appliquer une méthode simple (la sommation) qui obtient le même résultat... (ou plus précisément une augmentation du SNR de racine(N).. Ce qui revient sensiblement au même.)
    Je rejoins totalement :
    Citation Envoyé par diogene
    Je ne vois pas comment le suréchantillonage pourrait améliorer le rapport S/B, mis à part le fait de diminuer le bruit de quantification et dans le cas présent, ce n'est certainement pas un terme qui intervient dans le S/B observé.
    Mais un grand merci pour tous ces efforts...
    Même si je sors déprimé de cette quête...
    Citation Envoyé par ol9245
    Quand j'étais gamin il y avait les supermarché Mamouth.
    Ils faisaient leur pub sur "Mamouth écrase les prix" (c'était fin ...)

    Eh bien aujourd'hui, on a Savitsky-Golay :
    Savitsky-Golay écrase le bruit.
    Je rajouterais : on a aussi Sango85 :
    Malgré les efforts, Sango85 écrase les théories...

    OK je
    Matlab R2009b
    Forget the accents... sorry but qwerty ...

  12. #32
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Merci surtout à toi pour tes questions.
    Je crois en effet que tu as atisé la curiosité de nombre d'entre nous avec ton problème de signal caché dans une montagne de bruit. Si tu peux poster des données brutes, je parie que je ne serais pas le seul à les regarder.
    OL
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  13. #33
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par sango85
    Mais un grand merci pour tous ces efforts...
    Même si je sors déprimé de cette quête...
    Faut etre aussi réaliste... Jusqu'a 10/15db de bruit, on peut esperer recuperer le signal par des methodes simples (sommation, passe-bas, ...).

    Au dela (de 20 a 30db), c'est pratiquement impossible si on n'a pas la modelisation du signal et/ou du bruit (cf kalman).

    Quand a un bruit de 40 a 60db, je ne pense pas qu'il existe un moyen de recuperer le signal... (essayez de mettre un bruit x100 sur une image, pour voir).
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  14. #34
    Membre habitué Avatar de sango85
    Inscrit en
    Février 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2007
    Messages : 147
    Points : 161
    Points
    161
    Par défaut
    Voici une proposition de modélisation de mon problème sous Matlab... Les plus courageux pourront peut-être y jetter un coup d'oeil... et trouver des erreurs pour me faire dire que je me trompe ...
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    % Ce  script n'est qu'une application théorique du test d'amélioration du
    % SNR sous Matlab
    clear all;  clc; 
     
    % Test de suppression de bruit blanc : oversampling et moyennage
    Fech = 250;                             % Ancienne fréquence d'échantillonnage
    New_Fech = 25;                          % Nouvelle fréquence d'échantillonnage ^^
    coef_bruit = 10;                       % Amplitude du bruit par rapport au signal
    duree = 10;                             % Durée de l'acquisition
    nb_capteurs = 12;                       % Nombres de capteurs
    Freq_sinus = 3;                         % Fréquence du signal
    k = (1/Fech:1/Fech:duree)';             % Vecteur temps
    signal = sin(2*pi*Freq_sinus*k);        % Signal utile (ici un simple sinus)
    sb = zeros(size(signal,1),nb_capteurs); % Vecteur des signaux additionnés de bruit
    for i = 1:nb_capteurs,
        sb(:,i) = signal + coef_bruit*randn(size(signal,1),1);
    end;    % On crée une matrice constituée du signal additionné de bruits blancs...
     
    % Calcul de la moyenne simple et sous échantillonnage à New_Fech Hz
    moy = mean(sb,2);
     
    % Calcul du sous échantillonnage maison
    new_moy = zeros(Fech*duree,nb_capteurs);
    for capteur = 1:nb_capteurs,
        signal_courant = sb(:,capteur); 
        ratio = Fech/New_Fech;
        signal_selection_coupee = reshape(signal_courant,ratio,size(signal_courant,1)/ratio)';
        signal_resample = zeros(Fech*duree,ratio);
            for i = 1:ratio,
                signal_resample(:,i) = resample(signal_selection_coupee(:,i),ratio,1);
                signal_resample(:,i) = [zeros(i-1,1);signal_resample(1:end-i+1,i)];
            end;
        new_moy(:,capteur) = mean(signal_resample,2);
    end;
    new_moy_recalculee = mean(new_moy,2);
     
    % Lavage du workspace
    clear new_moy; clear i; clear k; clear Fr*; clear capteur; clear coef_bruit; clear ratio;
    clear signal_resample; clear signal_courant; clear signal_selection_coupee;
     
    % Rééchantillonnage
    resampled_signal = resample(signal,New_Fech,Fech);  % Signal d'origine
    resampled_moy = resample(moy,New_Fech,Fech);        % Moyenne de tous les signaux
    resampled_new_moy = resample(new_moy_recalculee,New_Fech,Fech); % Moyenne recalculée
     
    % Affichage de comparaison (temporel)
    figure(1); plot([signal moy new_moy_recalculee])
    figure(2); plot([resampled_signal resampled_moy resampled_new_moy])
     
    % Affichage des FFT
    figure(3)
    k_freq = (1:size(signal,1))/duree;
    plot(k_freq,abs(fft(signal)))
    hold on;
    plot(k_freq,abs(fft(moy)),'g')
    plot(k_freq,abs(fft(new_moy_recalculee)),'r')
    legend('Signal d''origine','Signal moyenné','Signal suréchantillonné, moyenné et sous-échantillonné')
    xlim([0 125])
    Désolé pourr l'indigestion...

    Si quelqu'un veut des données vraiment brutes... On peut s'arranger...
    Matlab R2009b
    Forget the accents... sorry but qwerty ...

  15. #35
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    La sommation va améliorer le S/B parce que le bruit des capteurs est décorrélé.
    Ce n'est pas le cas pour le bruit affectant les différents échantillons obtenus par un suréchantillonnage sur un capteur donné: Le bruit sur un capteur n'est pas blanc mais est à bande de fréquence limitée par le filtrage qui précède l'échantillonnage. Ordres de grandeur : si Df est la bande de fréquence après filtrage, pour que le bruit pour deux échantillons mesurés soit décorrèlé, il faut que l'intervalle T entre deux mesures soit grand devant 1/Df. Si on veut réaliser cette condition, autrement dit Df >> Fe , Fe la fréquence d'échantillonnage, on viole la condition de Shannon et on provoque un repliement du bruit dans la bande du signal ce qui est catastrophique.

    Il semblerait que la première chose à faire serait d'essayer d'améliorer les performances de bruit des capteurs.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  16. #36
    Membre habitué Avatar de sango85
    Inscrit en
    Février 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2007
    Messages : 147
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par diogene
    La sommation va améliorer le S/B parce que le bruit des capteurs est décorrélé.
    Absolument tout à fait d'accord.
    Citation Envoyé par diogene
    Ce n'est pas le cas pour le bruit affectant les différents échantillons obtenus par un suréchantillonnage sur un capteur donné: Le bruit sur un capteur n'est pas blanc mais est à bande de fréquence limitée par le filtrage qui précède l'échantillonnage. Ordres de grandeur : si Df est la bande de fréquence après filtrage, pour que le bruit pour deux échantillons mesurés soit décorrèlé, il faut que l'intervalle T entre deux mesures soit grand devant 1/Df. Si on veut réaliser cette condition, autrement dit Df >> Fe , Fe la fréquence d'échantillonnage, on viole la condition de Shannon et on provoque un repliement du bruit dans la bande du signal ce qui est catastrophique.
    Pour résumer, il y avait de l'idée, mais applicable à mon cas...
    Donc au final, un grand merci ....
    Mais moi je crois que :

    Le TAG "Irrésolu" n'existe pas...
    Matlab R2009b
    Forget the accents... sorry but qwerty ...

  17. #37
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par pseudocode
    ..Quand a un bruit de 40 a 60db, je ne pense pas qu'il existe un moyen de recuperer le signal... (essayez de mettre un bruit x100 sur une image, pour voir).
    Bah si, c'est plus que courant en astrophysique (on peut descendre jusquà signal environ à 5% ou 3% du bruit).

    Sauf que en général effectivement il y a des méthodes (différentes suivant ce dont on se préocuppe)..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  18. #38
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    J'ai pas bien compris ton code.
    j'ai moi aussi fait des tests similaires de mon côté avec des données sinus.

    signal = 20 Hz, amplitude 1
    échantillonage = 1 kHz
    donc 50 mesures sur une période

    je passe un Savitsky-Golay sur une fenêtre de 400 mesures, donc 8 cycles
    Sur ces 8 cycles, j'ai 16 passages par zéro, que je dois donc modéliser par un polynôme de degré au moins égal à 16. J'utilise un polynôme de degré 32.

    J'arrive à restituer le signal de départ malgré un bruit blanc d'amplitude 5. C'est un pu abîmé, mais clairement reconnaissable en phase et en fréquence à l'oeui nu. Avec une analyse spectrale, il est clair que tu va pouvoir supporter plus de bruit.

    Or, si tu s 12 cpateurs, tu as déja réduit ton bruit par un facteur racine (12) = 3.46 donc le bruit de 5 que j'arrive à éponger correspond à un bruit de 17.

    Conclusion :
    - faire pédaler les 12 capteurs à 1 kHz
    - moyenner les 12 capteurs
    - Savtisky-Golay sur une fenêtre de 400 valeurs (soit 0.4 s) polynôme de degré 32
    - analyse spectrale du résultat pour retrouver le spectre d'origine.

    Note : comme Savitsky-Golay se fait en fait dans le domaine de Fourrier, ça veut dire qu'il y a un raccourci dans le domaine spectral pour passer directement du spectre pourri au spectre nettoyé. Mais là, je rends mon tablier : je ne connais absolument rien eu analyse spectrale.

    Edit : j'ai relu ton premier post : un bruit de 100 à 1000 ... no way ! change de capteur !!
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  19. #39
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Une dernière idée :
    ton signal est-il très stable en fréquence et en phase ? oui ? gagné !

    Tu fais la moyenne de dizaines de milliers de spectres calculés sur des échantillons successifs. la puissance à la fréquence de ton signal va se cumuler alors que la puissance aux fréquences de bruit pur vont se moyener.
    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
    clear all;  clc; 
    % Test de suppression de bruit blanc : oversampling et moyennage
    Fech = 1000;                             % Ancienne fréquence d'échantillonnage
    % New_Fech = 25;                          % Nouvelle fréquence d'échantillonnage ^^
    coef_bruit = 100;                       % Amplitude du bruit par rapport au signal
    duree = 10;                             % Durée de l'acquisition
    nb_capteurs = 12;                       % Nombres de capteurs
    Freq_sinus = 3;                         % Fréquence du signal
    k = (1/Fech:1/Fech:duree)';             % Vecteur temps
    signal = sin(2*pi*Freq_sinus*k);        % Signal utile (ici un simple sinus)
    sb = zeros(size(signal,1),nb_capteurs); % Vecteur des signaux additionnés de bruit
    spectre = signal * 0 ;
     
    for k=1:10000
        for i = 1:nb_capteurs,
            sb(:,i) = signal + coef_bruit*randn(size(signal,1),1);
        end;    % On crée une matrice constituée du signal additionné de bruits blancs...
     
        % Calcul de la moyenne simple et sous échantillonnage à New_Fech Hz
        moy = mean(sb,2);
        spectre = spectre + abs(fft(moy)) ;
     
        % Affichage des FFT moyennes (UNE SUR 100)
        if mod (k, 100)==0
            figure(3), clf ; 
            k_freq = (1:size(signal,1))/duree;
            plot(k_freq,abs(fft(signal)))
            hold on;
            plot(k_freq, spectre ./ k ,'g')
            legend('Signal d''origine','Signal moyenné')
            xlim([0 125])
            drawnow ;
        end
    end
    Tu peux aussi cumuler cette méthode avec les autres (savtisky-golay, suréchantillonage, moyenne de 12 capteurs.
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  20. #40
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    <HS> j'ai l'impression que ol9245 est a fond dans Savitsky-Golay en ce moment... </HS>
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/02/2015, 00h04
  2. Cherche une méthode pour créer un rapport comme avec Tinn R
    Par tiyolx dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 14/08/2012, 08h20
  3. rapport signal bruit SNR
    Par tapouni dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 18/04/2008, 19h56
  4. rapport signal bruit
    Par zozo37 dans le forum Traitement du signal
    Réponses: 16
    Dernier message: 19/01/2008, 12h38
  5. Rapport signal sur bruit
    Par tahoser dans le forum Signal
    Réponses: 1
    Dernier message: 18/01/2008, 14h41

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