sonar, corrélation et matlab
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

sonar, corrélation et matlab



  1. #1
    invite7a6d8f6f

    sonar, corrélation et matlab


    ------

    Bonjour,
    je dois faire un sonar ou quelque chose qui se rassemble a fin de calculer de façon théorique la profondeur d'un local.

    la façon de procéder est la suivante:
    j'utilise l'objet analogoutput de matlab a fin d'envoyer un chirp par la carte son, au même temps je récupérer le signal à l'aide d'un microphone puis je dois effectuer la corrélation de ces deux signaux à fin de trouver le délai, ainsi le temps et avec la vitesse du temps, trouver la distance.
    j'ai le code suivant en matlab
    j'essaye de chercher le maximum de l'autocorrelation et celui de l'inter correlation a fin d'obtenir le delai, je ne sais pas si cela tient la route?
    merci de votre aide et de vos commentaires. je vous serai très réconnaissant.
    merci d'avance.
    Code:
    %analog output of chirp
    
    ao = analogoutput('winsound');
    chan = addchannel(ao,1);
    duration = 4;
    set(ao,'SampleRate',11025)
    set(ao,'TriggerType','Manual')
    ActualRate = get(ao,'SampleRate');
    len = ActualRate*duration;
    x = wavread('sonarping.wav');
    putdata(ao,x)
    %start(ao)
    %trigger(ao)
    %waittilstop(ao,5)
    
    %capture using a micro and sound card of analog output object
    
    AI = analoginput('winsound');
    chan_in = addchannel(AI,1);
    duration = 4; %4second acquisition
    set(AI,'SampleRate',11025)
    ActualRate = get(AI,'SampleRate');
    set(AI,'SamplesPerTrigger',duration*ActualRate)
    set(AI,'TriggerType','Manual')
    blocksize = get(AI,'SamplesPerTrigger');
    Fs = ActualRate;
    %start(AI)
    %trigger(AI)
    
    start([ao AI])
    trigger([ao AI])
    
    y = getdata(AI);
    
    autocorr=xcorr(x,x);
    [value_auto,position_auto]=max(autocorr);
    crosscorr=xcorr(x,y);
    [value_cross,position_cross]=max(crosscorr);
    delay=position_cross-position_auto
    la fonction max donne des echantillons, donc le delai c'est en echantillons n'est pas, donc avec la frequence d'echantillonage j'obtiens le temps et multipliant par la vitesse du son de 340 secondes j'ai la distance.
    Le problème est que j'obtiens des résultats illogiques et aberrants.. peut etre parce que j'ai un mauvais algorithme.
    merci encore une fois.

    -----

  2. #2
    inviteb9f49292

    Re : sonar, correlation et matlab

    Salut,

    Je n'ai pas le temps de regarder ton code mais trois remarques:

    -ta distance c'est le temps divisé par deux, fois la vitesse du son, puisqu'il y a aller-retour de l'onde.

    -souvent on filtre par un passe-bas les resultats de l'intercorrelation car c'est le max de l'enveloppe que l'on recherche.

    -la vitesse du son varie avec la température et l'humidité, je ne pense pas que celà change grand chose dans une pièce fermée mais il faut le savoir.

    Voilà je jetterai un oeil sur l'algo si j'ai le temps un peu plus tard.

  3. #3
    invite7a6d8f6f

    Re : sonar, corrélation et matlab

    merci pour vos remarques.
    quand je récupére le signal j'essaye d'enlever la composante continue.
    si y est le signal reçu par le microphone, je fais :
    y = y-mean(y)
    est-ce que cela à un effet quelconque sur le résultat final, car à vrai dire j'ai des résultats aberrants
    pour un filtre il faut lui donner l'ordre et les fréquences qu'il doit filtrer (fréquence de coupure) comment retrouver les fréquences que je dois filtrer à fin de trouver l'enveloppe?
    on assume que la vitesse est de 340m/s
    merci encore

  4. #4
    inviteb9f49292

    Re : sonar, corrélation et matlab

    Re,
    En regardant rapidement, tout semble bon, sauf que ta variable delay contient le double du retard EN NB D'ECHANTILLONS, il faut donc que tu divises par la fréquence d'échantillonnage, et par deux.

    A plus.

  5. A voir en vidéo sur Futura
  6. #5
    invite7a6d8f6f

    Re : sonar, corrélation et matlab

    ne dois pas je filtrer le resultat de la correlation?
    est il necessaire d'utiliser shiftfft? pour centrer la correlation à zéro, il y a des gens qui mo'n dit de le faire.

    revenons au filtrage, quel est la frequence de coupure pour appliquer le filtre? dois je utiliser sptool?

    je suis vraiment débutant en traitement de signal, j'espere que vous excuserez mon ignorance.

  7. #6
    inviteb9f49292

    Re : sonar, corrélation et matlab

    Salut,
    Filtrer n'est pas le terme exact, c'est plus extraire l'enveloppe de l'intercorrélation (ce que tu peux faire en effectuant un filtrage passe-bas). La fréquence de coupure du filtre passe-bas dépends du spectre de ton chirp que je ne connais pas. L'inconvénient d'un filtre c'est que celà "retarde" le signal, donc une mesure de temps plus importante que le temps d'arrivé réel, mais que tu peux corriger.
    Je ne vois pas vraiment l'intérêt du fftshift, puisque tu soustrait le nombre d'échantillon du max de l'autocorr, le résultat est le même.
    Une remarque sur ton algo, pour éviter les surprises récupère la fréquences d'échantillonnage du fichier wav et sers en toi comme référence. Mais je pense que tu devrai avoir des résultats qui s'approchent de la réalité maintenant.

  8. #7
    invite7a6d8f6f

    Re : sonar, corrélation et matlab

    pour determiner la frequence d'echantillonage je lis d'abord le fichier wav ainsi meme si je met pas tel quel dans le code :
    [y,fs,nbits]=wavread('monfich.wav');
    y est le signal,
    fs la frequence de echantillonage,
    nbits, c'est le nombre de bits qu'il est code dans mon cas c'est 8.
    pour l'spectre, j'utilise sptool or il y a la commande fft? c'est de cela qu'il agit avec l'spectre? cela me donne est général des raies, paralleles mais comment trouver la fréquence a partir d'elles? je peux poster les screenshots.
    si je trouve les fréquences, et je filtre comment puis je corriger le temps? quel type de filtre?
    beaucoup des questions je sais, mais j'aimerai apprendre vraiment.

Discussions similaires

  1. TIPE sonar
    Par invite404de6d1 dans le forum TPE / TIPE et autres travaux
    Réponses: 1
    Dernier message: 01/03/2007, 18h06
  2. pb de correlation
    Par invited4451bba dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 25/10/2006, 14h09
  3. Sonar
    Par invite693d963c dans le forum Physique
    Réponses: 3
    Dernier message: 27/09/2006, 16h03
  4. Matlab COEF DE CORRELATION CROISEE
    Par heruhur dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 13/02/2006, 15h48
  5. sonar
    Par nanard dans le forum Électronique
    Réponses: 23
    Dernier message: 13/12/2005, 09h59
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...