bonjour ,
Je voudrais récupérer les sommets d'un signal bruité en sachant que le temps entre deux pics consécutifs n'est pas uniforme, il varie donc nous ne pouvons pas faire une boucle for sur l'axe des temps, on aurait certes quelques valeurs mais tous les valeurs . En outre, nous ne pouvons pas fixer un seuil de valeurs à partir duquel nous sélectionnerons toutes les valeurs au dessus car si nous le faisons, nous risquons de perdre des pics qui sont plus petits que le seuil fixé .
Enfin, l'objectif est d'avoir les pics du signal réel sans les valeurs provenant du bruit.
Merci pour l'aide
Voici comment se présente mes valeurs et l'instant d'acquisition de chaque valeur
peaks seconds
-55,3000000000000 25,5275000000000
-44,8500000000000 25,6575000000000
-61,2700000000000 25,7375000000000
-65,1900000000000 29,3525000000000
-66,6000000000000 29,3925000000000
-57,2300000000000 29,4225000000000
-60,2700000000000 29,4825000000000
-55,0200000000000 29,5775000000000
-62,4900000000000 29,6575000000000
-66,7800000000000 29,6775000000000
-65,3200000000000 29,7575000000000
-60,1100000000000 33,3025000000000
-53,6000000000000 33,3925000000000
-62,0300000000000 33,4525000000000
-48,4800000000000 33,4975000000000
-63,2800000000000 33,5825000000000
-65,9200000000000 33,6825000000000
-65,7100000000000 37,1625000000000
-65,8000000000000 37,1775000000000
On remarque le temps est non uniforme et qu'il y'a beaucoup de valeurs qui sont pas des valeurs du signal mais des valeurs émanant du bruit.
Voici le code que j'ai écrit mais qui ne marche car je faits une boucle for parcourant le temps par saut de 4s et aprés chaque saut , il me sélectionne valeur à l'instant t , la valeur à l'instant t-1 e celle à l'instant t+1 , il compare les valeurs et prend la plus grande. Ce raisonnement n'est pas tout à fait bon car comme je vous l'ai dit le temps n'est pas uniforme et je ne peux pas fixer de seuil aussi.
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
| %file loading
load('mesure.mat');
%selection of colons of peaks and colons of time
peaks = mesure(:,1);
time = mesure(:,2);
%Matrix definition
matrix = [peaks time];
[nb_lines,nb_colons] = size(matrix);
%jump of 4s between the lines
for counter=1:4:nb_lines
%comparison of value n-1 , n and n+1 , return the biggest value
if matrix(counter,:)>matrix(counter+1,:)& matrix(counter+1,:)> matrix(counter+2,:)
matrix(:,counter+1);
else
if matrix(counter,:)>matrix(counter+2,:)
matrix(counter+1,:) ;
else
matrix(counter+2,:);
end
end
end |
merci pour votre aide
Partager