trying to find peaks on a time series
Afficher commentaires plus anciens
i'm trying to find peaks on some time series data but when i write
[pks,locs]=findpeaks(x)
i get the position of peak on locs. but i want to get the locs the same length i have x files or better if i have locs represented as 0 and 1 i can get the x values without a hassle. is there an elegant and simple way of dooing it, like the find function??
i also am trying this but obviously it takes time because of the loops, is there any simple way of dooing this in matlab.
newx=zeros(length(xn),1);
for p=1:length(xn);
for m=1:length(locs);
if locs(m)==p
newx(p)=1;
else
end;
end;
end;
end;
Réponse acceptée
Plus de réponses (1)
Wayne King
le 12 Juin 2012
Then please compare:
x = [2 12 4 6 9 4 3 1 19 7];
[pks,locs] = findpeaks(x);
% here is your code
newx=zeros(length(x),1);
for p=1:length(x);
for m=1:length(locs);
if locs(m)==p
newx(p)=1;
else
end
end
end
Now what I answered:
newx2 = zeros(length(x),1);
newx2(locs) = 1;
Now
isequal(newx,newx2)
That returns a 1 for me.
Catégories
En savoir plus sur Descriptive Statistics dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!