Bonjour ,
Problème : J'ai un signal accoustique de 4999 éléments (dans exemple : voie1, 25 éléments). J'aimerais pouvoir identifier une typologie spécifique dans ce signal, une typologie longue de 600 éléments (dans l'exemple : voie_echantillon, 5 éléments). Pour ce faire je lis mon signal, dès qu'il a une valeur importante je commence la comparaison avec CORR2. Puis je continu jusqu'à la fin.
Dans l'exemple ci dessous les valeurs inférieur à 10 sont du "bruit", je cherche donc le 1er max (88) puis je compare donc la partie de voie1 = [88 5 4 5 6] (dans exemple : voie1_calcul) avec voie_echantillon, ce qui donne une corrélation parfaite (1). Je continu ensuite à partir du 4 (index=9), et refais la même chose : trouver la 1ere valeur importante (>10) et comparer (ici je compare donc [99 5 8 5 44] avec voie_echantillon >> corrélation pas bonne). Puis je continu, etc.. sans oublier qu'il faudra arreter avant que le signal restant soit < 5 éléments (sinon pas de comparaison possible avec voie_echantillon).
Voici le code mais il foire pas mal (ne s'arrete pas) et j'ai un peu de mal à voir l'erreur
En somme, voici le schéma que devrait faire le 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 voie_echantillon = [88 5 4 5 6] ; voie1 = [2 5 4 88 5 4 5 6 4 5 99 5 8 5 44 54 78 52 56 4 85 5 4 5 6] idx_1er_max = min(find(voie1>10)) i=0; while idx_1er_max <= 25-5 i = i+1 ; voie_calcul = voie1(idx_1er_max:idx_1er_max+4) ; numel(voie_calcul); correl(i) = abs(corr2(voie_echantillon,voie_calcul)) voie_restante = voie1(idx_1er_max+5:end) ; idx_1er_max = min(find(voie_restante>10)) end
Merci !
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 1- ------[88 5 4 5 6] ------------------------------------- [2 5 4 88 5 4 5 6 4 5 99 5 8 5 44 54 78 52 56 4 85 5 4 5 6] >> ressort correl(1) = 1 2- ---------------------[88 5 4 5 6] ----------------------- [2 5 4 88 5 4 5 6 4 5 99 5 8 5 44 54 78 52 56 4 85 5 4 5 6] >> ressort correl(2) = 0.2 3- ---------------------------------[88 5 4 5 6] ----------- [2 5 4 88 5 4 5 6 4 5 99 5 8 5 44 54 78 52 56 4 85 5 4 5 6] >> ressort correl(3) = 0.09 4- -----------------------------------------------[88 5 4 5 6] [2 5 4 88 5 4 5 6 4 5 99 5 8 5 44 54 78 52 56 4 85 5 4 5 6] >> ressort correl(4) = 0.9
EDIT : je vois un peu l'erreur car idx_1er_max n'est pas l'indice dans voie1 mais dans voie_restante... mais comment corrigé?
Partager