findpeaks
Trouver les maxima locaux
Syntaxe
Description
renvoie un vecteur contenant les maxima locaux (pics) du vecteur du signal d’entrée pks = findpeaks(y)y. Un pic local est un échantillon de données qui est plus grand que les deux échantillons voisins ou bien égal à une valeur Inf. La fonction renvoie les pics dans l’ordre où ils se produisent et exclut les points d’extrémité du signal différents de Inf. Si un pic est plat, la fonction renvoie seulement le point dont l’indice est le plus faible.
[___] = findpeaks(___, spécifie des options avec des arguments nom-valeur en plus du ou des arguments d’entrée des syntaxes précédentes.Name=Value)
findpeaks(___) sans arguments de sortie trace le signal en le superposant aux valeurs de pic.
Exemples
Définissez un vecteur contenant trois pics.
data = [25 8 15 5 6 10 10 3 1 20 7];
Trouvez les maxima locaux. La fonction findpeaks renvoie les pics dans l’ordre où ils se produisent. Elle n’inclut pas les points d’extrémité de data dans les pics détectés, car ils n’y a pas de voisin de gauche ou de droite auxquels les comparer.
pks = findpeaks(data)
pks = 1×3
15 10 20
Utilisez findpeaks sans arguments de sortie pour afficher les pics. Pour le pic plat, la fonction met seulement en évidence le point dont l’indice est le plus faible.
findpeaks(data)

Créez un signal constitué d’une somme de courbes de Gauss. Définissez la position, la hauteur et la largeur de chaque courbe.
x = linspace(0,1,1000); Pos = [1 2 3 5 7 8]'/10; Hgt = [3 4 4 2 2 3]'; Wdt = [2 6 3 3 4 6]'/100; y = sum(Hgt.*(exp(-((x-Pos)./Wdt).^2)),1);
Utilisez findpeaks avec les paramètres par défaut pour trouver les pics du signal et leur emplacement.
[pks,locs] = findpeaks(y,x);
Tracez les pics avec findpeaks. Ajoutez une étiquette à chaque pic.
findpeaks(y,x) text(locs+.02,pks,num2str((1:numel(pks))'))

Triez les pics du plus haut au plus bas.
[psor,lsor] = findpeaks(y,x,SortStr="descend");
findpeaks(y,x)
text(lsor+.02,psor,num2str((1:numel(psor))'))
Créez un signal constitué d’une somme de courbes de Gauss sur une période entière d’un cosinus. Définissez l’emplacement, la hauteur et la largeur de chaque courbe.
x = linspace(0,1,1000); base = 4*cos(2*pi*x); Pos = [1 2 3 5 7 8]'/10; Hgt = [3 7 5 5 4 5]'; Wdt = [1 3 3 4 2 3]'/100; y = sum(Hgt.*(exp(-((x-Pos)./Wdt).^2)),1) + base;
Utilisez findpeaks pour localiser et tracer les pics dont la proéminence est supérieure ou égale à 4. Seuls le pic le plus haut et celui le plus bas remplissent la condition de proéminence minimale.
[~,locs4,~,proms4] = findpeaks(y,x,MinPeakProminence=4)
locs4 = 1×2
0.1982 0.4995
proms4 = 1×2
5.5773 4.4171
findpeaks(y,x,MinPeakProminence=4,Annotate="extents")
Affichez l’emplacement, la proéminence et la largeur à la moitié de la proéminence de tous les pics. Les deuxième et quatrième pics sont ceux dont la proéminence est supérieure ou égale à 4.
[~,locs,widths,proms] = findpeaks(y,x)
locs = 1×6
0.1001 0.1982 0.2983 0.4995 0.7017 0.8018
widths = 1×6
0.0154 0.0431 0.0377 0.0625 0.0274 0.0409
proms = 1×6
2.6816 5.5773 3.1448 4.4171 2.9191 3.6363
Extrayez les pics des données relatives au nombre moyen de taches solaires et estimez le cycle moyen des taches solaires.
Chargez le fichier sunspot.dat qui contient le nombre moyen de taches solaires observées chaque année de 1700 à 1987. Tracez le nombre de taches solaires par an et superposez-lui les maxima. Zoomez sur la période comprise entre 1855 et 1920.
load sunspot.dat year = sunspot(:,1); avSpots = sunspot(:,2); findpeaks(avSpots,year) xlabel("Year") xlim([1855 1920])

Les taches solaires sont un phénomène cyclique. On sait que leur nombre atteint un pic environ tous les 11 ans.
Estimez la durée du cycle en déterminant l’écart moyen entre les pics. Commencez par ignorer les pics qui ne sont pas des maxima. Limitez les écarts pic à pic acceptables à des périodes supérieures à 6 ans.
findpeaks(avSpots,year,MinPeakDistance=6)
xlabel("Year")
xlim([1855 1920])
Créez un tableau datetime avec les données annuelles. Supposez que les taches solaires ont été comptées le 20 mars de chaque année, vers l’équinoxe de printemps. Trouvez les années où le nombre de taches solaires atteint un pic. Utilisez la fonction years pour définir l’écart minimal entre les pics comme une donnée de type duration.
ty = datetime(year,3,20); [pk,lk] = findpeaks(avSpots,ty,MinPeakDistance=years(6)); plot(ty,avSpots,lk,pk,"o") xlabel("Year")

Calculez le cycle moyen des taches solaires. Le cycle moyen des taches solaires estimé est très proche de la durée connue, qui est de 11 ans.
dttmCycle = years(mean(diff(lk)))
dttmCycle = 10.9600
Il est possible de trouver les pics dont les caractéristiques répondent à certains critères, parmi lesquels la distance ou hauteur de pic minimale ou maximale, la proéminence et le seuil d’écart entre un pic et ses voisins. Utilisez findpeaks pour contraindre une ou plusieurs caractéristiques des pics.
Contraindre les pics selon une caractéristique d’un signal audio
Chargez un signal audio échantillonné à 7 418 Hz. Sélectionnez 200 échantillons.
load mtlb
select = mtlb(1001:1200);Trouvez et mettez en évidence tous les pics du signal audio. Trouvez ensuite les pics séparés par un écart d’au moins 5 ms et mettez-les en évidence. Pour appliquer la contrainte d’écart minimal, findpeaks choisit le plus haut pic du signal et ignore tous les pics situés à moins de 5 ms de celui-ci. La fonction répète ensuite la procédure pour le plus haut pic restant et recommence jusqu’à ce qu’il n’y ait plus de pics à traiter.
figure tiledlayout("vertical") nexttile findpeaks(select,Fs) legend("No Constraints",Location="southwest") nexttile lgn = @(txt) legend(txt,FontName="FixedWidth",Location="southwest"); findpeaks(select,Fs,MinPeakDistance=0.005) lgn("MinPeakDistance")

Trouvez et tracez les pics qui répondent individuellement à chacune des contraintes suivantes :
Trouvez les pics dont l’amplitude est supérieure ou égale à 1 V.
Trouvez les pics qui sont supérieurs d’au moins 1 V aux échantillons voisins.
Trouvez les pics qui descendent d’au moins 1 V d’un côté ou de l’autre avant que le signal atteigne une valeur supérieure.
figure tiledlayout("vertical") nexttile findpeaks(select,Fs,MinPeakHeight=1) lgn("MinPeakHeight") nexttile findpeaks(select,Fs,Threshold=1) lgn("Threshold") nexttile findpeaks(select,Fs,MinPeakProminence=1) lgn("MinPeakProminence")

Contraindre plusieurs caractéristiques des pics d’un signal chirp
Trouvez et mettez en évidence tous les pics d’un signal chirp de 1 000 échantillons dont la largeur est comprise entre 2,5 et 4 ms.
N = 1000; x = sin(2*pi*(1:N)/N + (10*(1:N)/N).^2); figure findpeaks(x,Fs,Annotate="extents", ... MinPeakWidth=2.5e-3,MaxPeakWidth=4e-3) title("Peaks with Multiple Constraints")

Les capteurs peuvent renvoyer des lectures tronquées si les données dépassent un point de saturation donné. Vous pouvez considérer ces valeurs extrêmes comme inutiles et choisir de les ignorer ou au contraire les intégrer dans votre analyse.
Générez un signal constitué du produit de fonctions trigonométriques de fréquences 5 Hz et 3 Hz noyé dans un bruit blanc gaussien avec une variance de 0,1². Échantillonnez le signal pendant une seconde à une fréquence de 100 Hz. Réinitialisez le générateur de nombres aléatoires pour obtenir des résultats reproductibles.
rng("default")
Fs = 100;
t = 0:1/Fs:1;
s = sin(2*pi*5*t).*sin(2*pi*3*t) + randn(size(t))/10;Synthétisez une mesure saturée en tronquant chaque lecture dont la valeur absolue est supérieure à la limite spécifiée de 0,32. Normalisez ensuite le signal pour qu’il soit compris entre 0,1 et 1. Convertissez l’amplitude normalisée en décibels et tracez le résultat.
bnd = 0.32; s(s>bnd) = bnd; s(s<-bnd) = -bnd; sNorm = 0.1+0.9*(s-min(s))/(max(s)-min(s)); sig = mag2db(sNorm); plot(t,sig) xlabel("Time (s)") ylabel("Magnitude (dB)") ylim([-25 5])

Localisez les pics et les creux du signal. findpeaks identifie uniquement le front montant de chaque pic plat.
[pk,lcp] = findpeaks(sig,t); % Peaks [vl,lcv] = findpeaks(-sig,t); % Valleys hold on plot(lcp,pk,"x",lcv,-vl,"*")

Utilisez l’argument nom-valeur Threshold pour exclure les creux et les pics plats. Imposez une différence d’amplitude minimale de 0,1 dB entre un pic ou un creux et ses voisins.
[pkt,lctp] = findpeaks(sig,t,Threshold=0.1); [vlt,lctv] = findpeaks(-sig,t,Threshold=0.1); plot(lctp,pkt,"o",LineWidth=1.2) plot(lctv,-vlt,"d",LineWidth=1.2)

Créez un signal constitué d’une somme de courbes de Gauss. Définissez l’emplacement, la hauteur et la largeur de chaque courbe.
x = linspace(0,1,1000); Pos = [1 2 3 5 7 8]'/10; Hgt = [7 6 3 2 2 3]'; Wdt = [3 8 4 3 4 6]'/100; y = sum(Hgt.*(exp(-((x-Pos)./Wdt).^2)),1);
Mesurez la largeur des pics en utilisant la moitié de la proéminence et la moitié de la hauteur comme référence.
tiledlayout("flow") nexttile findpeaks(y,x,Annotate="extents") title("Half-Prominence Peak Widths") nexttile findpeaks(y,x,Annotate="extents",WidthReference="halfheight") title("Half-Height Peak Widths")

Sélectionnez les pics les plus élevés séparés par un écart d’au moins 0,5 unité sur l’axe des x. Mesurez la largeur des pics en utilisant la moitié de la proéminence et la moitié de la hauteur comme référence.
figure tiledlayout("flow") nexttile findpeaks(y,x,MinPeakDistance=0.5,Annotate="extents") title("Half-Prominence Peak Widths") nexttile findpeaks(y,x,MinPeakDistance=0.5,Annotate="extents", ... WidthReference="halfheight") title("Half-Height Peak Widths")

Seuls les premier et dernier pics remplissent la condition d’écart minimal. Les largeurs affichées sur le tracé correspondent donc à ces deux pics. Comme l’étendue de chaque pic reste inchangée, la largeur de pic conserve la même valeur indépendamment des conditions spécifiées et du fait que le pic soit sélectionné ou non.
Affinez l’estimation de l’emplacement des deux principaux pics d’un signal en utilisant la méthode des moindres carrés non linéaires avec un noyau de fonction sinc.
Générer le signal
La compression d’impulsion radar d’une forme d’onde FM linéaire produit un spectre en sinus cardinal (sinc) où les emplacements de fréquence des pics sont proportionnels à la distance entre le radar et l’objet détecté. Vous pouvez commencer par estimer l’emplacement et l’amplitude des pics avec findpeaks puis affiner vos estimations avec refinepeaks. Cet exemple montre comment déterminer l’amplitude et l’emplacement des pics d’un signal de compression d’impulsion synthétique non bruité. Il utilise refinepeaks pour affiner les estimations.
Générez un signal composé de deux formes d’onde en sinus cardinal (sinc) avec des pics de 1 et 1,5 respectivement situées à 4,76 kHz et 35,8 kHz. Définissez l’espacement des fréquences à 2,5 Hz.
aTg = [1 1.5]; fTg = 1e3*[4.76 35.8]; freqkHzFull = (0:0.0025:50)'; waveFull = abs(sinc([1 0.5].*(freqkHzFull-fTg/1e3)))*aTg';
Sous-échantillonnez le signal par un facteur de 200 pour que l’espacement des fréquences entre les échantillons soit de 0,5 kHz. Cet exemple affine les estimations d’amplitude et d’emplacement des pics du signal sous-échantillonné et compare les estimations affinées aux valeurs des signaux d’origine.
freq = downsample(freqkHzFull,200); wave = downsample(waveFull,200); plot(freqkHzFull,waveFull,freq,wave,"*") legend(["Full signal" "Selected samples"],Location="northwest") xlabel("Frequency (kHz)") ylabel("Magnitude")

Affiner les pics avec les moindres carrés non linéaires
Utilisez findpeaks pour obtenir une estimation initiale des amplitudes, emplacements et largeurs à mi-hauteur des deux plus hauts pics du signal.
[PV,PL,PW] = findpeaks(wave,NPeaks=2, ... SortStr="descend",WidthReference="halfheight"); table(PV,freq(PL), RowNames="Peak estimate "+(1:numel(PV)), ... VariableNames=["Amplitude" "Frequency (kHz)"])
ans=2×2 table
Amplitude Frequency (kHz)
_________ _______________
Peak estimate 1 1.4824 36
Peak estimate 2 0.9374 5
Utilisez refinepeaks pour affiner l’estimation des pics avec la méthode NLS (moindres carrés non linéaires). Définissez les points de fréquence du signal et les largeurs de pics. Les valeurs de pics sont sensiblement plus proches des valeurs attendues de 1,5 et 1, tandis que les emplacements de fréquence se rapprochent respectivement de 35,8 kHz et 4,76 kHz.
LW = max(PW,2); [Ypk,Xpk] = refinepeaks(wave,PL,freq,Method="NLS",LobeWidth=LW); table(Ypk,Xpk, RowNames="Refined peak "+(1:numel(Ypk)), ... VariableNames=["Amplitude" "Frequency (kHz)"])
ans=2×2 table
Amplitude Frequency (kHz)
_________ _______________
Refined peak 1 1.5063 35.8
Refined peak 2 1.0163 4.7628
Tracez les amplitudes des pics affinées sur l’axe des y et les emplacements mis à jour des pics par rapport aux estimations initiales sur l’axe des x. Les deux pics initialement estimés et les deux échantillons voisins sont à 0,5 kHz d’écart. Les pics affinés signalés par des cercles pleins indiquent les emplacements réels des pics par rapport à ceux initialement estimés ainsi que les amplitudes corrigées.
refinepeaks(wave,PL,freq,Method="NLS",LobeWidth=LW) yline(aTg) % Theoretical peak amplitudes errorBounds = aTg.*(1+0.03*[-1;1]); yline(errorBounds(:),":") % ±3% error bounds legend("Peak "+[1 2])

Arguments d'entrée
Données d’entrée, définies par un vecteur. y doit être à valeurs réelles et contenir au moins trois éléments.
Types de données : double | single
Emplacements, définis par un vecteur ou un tableau datetime. x doit augmenter de façon monotone et avoir la même longueur que y. Si vous ne spécifiez pas x, la fonction utilise les indices de y comme emplacements.
Types de données : double | single | datetime
Fréquence d’échantillonnage, définie par un scalaire positif. La fréquence d’échantillonnage est le nombre d’échantillons par unité de temps. Si l’unité de temps est la seconde, la fréquence d’échantillonnage est exprimée en hertz.
Types de données : double | single
Arguments nom-valeur
Vous pouvez spécifier des paires d’arguments sous la forme Name1=Value1,...,NameN=ValueN, où Name est le nom de l’argument et Value est la valeur correspondante. Les arguments nom-valeur doivent figurer après les autres arguments mais l’ordre des paires n’a pas d’importance.
Exemple : findpeaks(y,x,SortStr="descend",NPeaks=3) identifie les trois pics les plus élevés du signal y.
Nombre maximal de pics à renvoyer, défini par un scalaire entier positif.
Si vous ne spécifiez pas cet argument,
findpeaksrenvoie tous les pics identifiés à partir des données d’entréey.Si vous spécifiez cet argument avec
NPeaks=np,findpeaksrenvoie au maximumnppics à partir des données d’entréey. Si vous spécifiez égalementSortStr,findpeaksrenvoie les pics comme suit :Si
SortStr="none",findpeaksrenvoie lesnppremiers pics à partir des données d’entrée.Si
SortStr="ascend",findpeaksrenvoienppics dans l’ordre croissant en commençant par le pic le plus bas des données d’entrée.Si
SortStr="descend",findpeaksrenvoienppics dans l’ordre décroissant en commençant par le pic le plus haut des données d’entrée.
Types de données : double | single
Ordre de tri des pics, défini comme suit :
"none"renvoie les pics dans l’ordre où ils se produisent dans les données d’entrée."ascend"renvoie les pics dans l’ordre croissant, de la plus petite à la plus grande valeur."descend"renvoie les pics dans l’ordre décroissant, de la plus grande à la plus petite valeur.
Hauteur de pic minimale, définie par un scalaire à valeur réelle. Utilisez MinPeakHeight pour que findpeaks renvoie seulement les pics dont la hauteur est supérieure à la valeur spécifiée dans cet argument. La définition d’une hauteur de pic minimale peut raccourcir le temps de traitement.
Types de données : double | single
Proéminence de pic minimale, définie par un scalaire non négatif. Utilisez MinPeakProminence pour que findpeaks renvoie seulement les pics dont l’importance relative est supérieure ou égale à la valeur spécifiée dans cet argument. Pour plus d’informations, veuillez consulter Proéminence.
Types de données : double | single
Différence de hauteur minimale entre un pic et ses voisins, définie par un scalaire non négatif. Utilisez Threshold pour que findpeaks renvoie seulement les pics qui sont supérieurs d’au moins la valeur spécifiée dans cet argument par rapport aux valeurs immédiatement voisines.
Types de données : double | single
Écart minimal entre les pics, défini par un scalaire positif. Lorsque vous spécifiez la valeur MinPeakDistance=d, la fonction findpeaks choisit le plus haut pic du signal et ignore tous les pics situés à moins de d échantillons ou unités de temps de celui-ci. La fonction répète ensuite la procédure pour le plus haut pic restant et recommence jusqu’à ce qu’il n’y ait plus de pics à traiter.
Si vous spécifiez un vecteur d’emplacements
x,MinPeakDistancedoit être exprimé en fonction dex. Sixest un tableaudatetime, définissezMinPeakDistancepar un scalaire de typedurationou par un scalaire numérique correspondant à un nombre de jours.Si vous spécifiez une fréquence d’échantillonnage
Fs,MinPeakDistancedoit être exprimé en unités de temps.Si vous ne spécifiez ni
xniFs,MinPeakDistancedoit être exprimé en nombre d’échantillons.
Utilisez cet argument pour que findpeaks ignore les petits pics à proximité d’un grand.
Types de données : double | single | duration
Hauteur de référence pour les mesures de largeur, définie par "halfprom" ou par "halfheight".
La fonction findpeaks estime la largeur d’un pic comme la distance entre les points où le signal descendant croise une ligne de référence horizontale. Elle sélectionne la hauteur de cette ligne d’après le critère spécifié dans cet argument :
"halfprom"positionne la ligne de référence sous le pic à une distance verticale égale à la moitié de sa proéminence. Pour plus d’informations, veuillez consulter Proéminence."halfheight"positionne la ligne de référence à la moitié de la hauteur du pic. La fonction tronque la ligne si l’un de ses points d’intersection se trouve en dehors des limites des pics qu’elle identifie à l’aide des valeurs des argumentsMinPeakHeight,MinPeakProminenceetThreshold. La limite entre les pics est définie par la position horizontale du creux le plus bas situé entre eux. La fonction ignore les pics dont la hauteur est inférieure à zéro lorsque vous sélectionnez cette valeur.
La fonction calcule l’emplacement des points d’intersection par interpolation linéaire.
Largeur de pic minimale, définie par un scalaire positif. Spécifiez MinPeakWidth=minPW pour sélectionner uniquement les pics dont la largeur est supérieure ou égale à minPW échantillons ou unités de temps.
Si vous spécifiez un vecteur d’emplacements
x,MinPeakWidthdoit être exprimé en fonction dex. Sixest un tableaudatetime, définissezMinPeakWidthpar un scalaire de typedurationou par un scalaire numérique correspondant à un nombre de jours.Si vous spécifiez une fréquence d’échantillonnage
Fs,MinPeakWidthdoit être exprimé en unités de temps.Si vous ne spécifiez ni
xniFs,MinPeakWidthdoit être exprimé en nombre d’échantillons.
Types de données : double | single | duration
Largeur de pic maximale, définie par un scalaire positif. Spécifiez MaxPeakWidth=maxPW pour sélectionner uniquement les pics dont la largeur est inférieure ou égale à maxPW échantillons ou unités de temps.
Si vous spécifiez un vecteur d’emplacements
x,MaxPeakWidthdoit être exprimé en fonction dex. Sixest un tableaudatetime, définissezMaxPeakWidthpar un scalaire de typedurationou par un scalaire numérique correspondant à un nombre de jours.Si vous spécifiez une fréquence d’échantillonnage
Fs,MaxPeakWidthdoit être exprimé en unités de temps.Si vous ne spécifiez ni
xniFs,MaxPeakWidthdoit être exprimé en nombre d’échantillons.
Types de données : double | single | duration
Style de tracé, défini comme suit :
"peaks"trace le signal et indique l’emplacement et la valeur de chaque pic en annotation."extents"trace le signal et indique l’emplacement, la valeur, la largeur et la proéminence de chaque pic en annotation.
La fonction ignore cet argument si vous appelez findpeaks avec des arguments en sortie.
Arguments de sortie
Maxima locaux, renvoyés sous la forme d’un vecteur de valeurs de signal. S’il n’existe aucun maximum local, pks est vide.
Emplacements des pics, renvoyés sous la forme d’un vecteur.
Si vous spécifiez un vecteur d’emplacements
x,locscontient les valeurs dexaux indices des pics.Si vous spécifiez une fréquence d’échantillonnage
Fs,locsest un vecteur numérique d’instants avec un écart temporel de 1/Fsentre deux échantillons consécutifs.Si vous ne spécifiez ni
xniFs,locsest un vecteur d’indices entiers.
Largeurs des pics, renvoyées sous la forme d’un vecteur de nombres à valeurs réelles. La largeur de chaque pic est calculée comme la distance entre les points à sa gauche et à sa droite où le signal croise une ligne de référence dont la hauteur est définie par WidthReference. Ces points sont eux-mêmes déterminés par interpolation linéaire.
Proéminences des pics, renvoyées sous la forme d’un vecteur de nombres à valeurs réelles. La proéminence d’un pic est la distance verticale minimale jusqu’à laquelle le signal doit descendre d’un côté ou de l’autre du pic avant de remonter jusqu’à un niveau supérieur au pic ou d’atteindre un point d’extrémité. Pour plus d’informations, veuillez consulter Proéminence.
En savoir plus
La proéminence d’un pic est la mesure dans laquelle le pic se démarque en raison de sa hauteur intrinsèque et de son emplacement par rapport aux autres pics. Un pic bas isolé peut être plus proéminent qu’un pic plus haut mais quelconque appartenant à une chaîne de pics élevés.
Pour mesurer la proéminence d’un pic :
Placez un marqueur sur le pic.
Prolongez une ligne horizontale vers la gauche et la droite à partir du pic jusqu’à ce que cette ligne :
Croise le signal parce qu’elle rencontre un pic plus élevé
Atteigne l’extrémité gauche ou droite du signal
Trouvez le minimum du signal dans chacun des deux intervalles définis à l’étape 2. Ce point est soit un creux, soit l’un des points d’extrémité du signal.
Le plus élevé des deux minima d’intervalle définit le niveau de référence. La hauteur du pic au-dessus de ce niveau est sa proéminence.
findpeaks ne fait aucune supposition concernant le comportement du signal au-delà de ses points d’extrémité, quelle que soit la hauteur de ces derniers. Par conséquent, les étapes 2 et 4 ignorent le comportement du signal au-delà des points d’extrémité, ce qui influe souvent sur la valeur du niveau de référence. Prenons l’exemple des pics du signal suivant :
| Numéro de pic | L’intervalle de gauche s’étend entre le pic et | L’intervalle de droite s’étend entre le pic et | Point le plus bas dans l’intervalle de gauche | Point le plus bas dans l’intervalle de droite | Niveau de référence (minimum le plus élevé) |
|---|---|---|---|---|---|
| 1 | L’extrémité gauche | L’intersection due au pic 2 | Point d’extrémité gauche | a | a |
| 2 | L’extrémité gauche | L’extrémité droite | Point d’extrémité gauche | h | Point d’extrémité gauche |
| 3 | L’intersection due au pic 2 | L’intersection due au pic 4 | b | c | c |
| 4 | L’intersection due au pic 2 | L’intersection due au pic 6 | b | d | b |
| 5 | L’intersection due au pic 4 | L’intersection due au pic 6 | d | e | e |
| 6 | L’intersection due au pic 2 | L’extrémité droite | d | h | d |
| 7 | L’intersection due au pic 6 | L’intersection due au pic 8 | f | g | g |
| 8 | L’intersection due au pic 6 | L’extrémité droite | f | h | f |
| 9 | L’intersection due au pic 8 | L’intersection due au point d’extrémité droit | h | i | i |
Conseils
Vous pouvez réaliser une estimation initiale des pics du signal avec findpeaks puis affiner leurs amplitudes et leurs emplacements avec refinepeaks.
Supposons qu’un signal ait les amplitudes y et les emplacements x. L’extrait de code suivant montre comment estimer et affiner les pics à partir de y et x.
[yPeaks,xPeaksIdx] = findpeaks(y); [yRPeaks,xRPeaks] = refinepeaks(y,xPeaksIdx,x)
Capacités étendues
Notes d’usage et limitations :
La fonction
findpeaksne supporte pas les entréesdatetimepour la génération de code.
Notes d'usage et limitations :
La fonction
findpeaksne supporte pas les entréesdatetimepour la génération de code.
Cette fonction supporte complètement les GPU arrays. Pour plus d’informations, veuillez consulter Exécuter les fonctions MATLAB sur un GPU (Parallel Computing Toolbox).
Historique des versions
Introduit dans R2007bLa fonction findpeaks supporte la génération de code pour les processeurs graphiques (GPU). Vous devez avoir installé MATLAB® Coder™ et GPU Coder™ pour générer du code CUDA®.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)