How to select the maximum points of the absolute values of a sin function

2 vues (au cours des 30 derniers jours)
I would like to get all the maximum values of x in another matrix any idea? Sorry I am new
fs = 500;
t = 0:1/fs:10-1/fs;
x = abs(sin(2*pi*3*t));
  1 commentaire
Adam
Adam le 17 Août 2017
Modifié(e) : Adam le 17 Août 2017
Due to discretisation and the imperfect reproduction of the sine wave you will only pick up certain peaks as being the maximum.
find( x == 1 )
will give the indices of these locations, but when I run it this gives me only every 3rd peak. If you want the actual peak locations of the continuous curve surely that is just trivial maths?
peakLocs = 1/12 : 1/6 : ( 10 - 1/fs );

Connectez-vous pour commenter.

Réponse acceptée

Torsten
Torsten le 17 Août 2017
https://de.mathworks.com/help/signal/ref/findpeaks.html
Best wishes
Torsten.
  2 commentaires
Mauricio Galván García Luna
thank you so much!!
But once I get the maximum points is there a way to put them back in the time that they belong.
Torsten
Torsten le 17 Août 2017
Modifié(e) : Torsten le 17 Août 2017
[xp,locs] = findpeaks(x);
for i=1:numel(xp)
tp(i)=t(locs(i));
end
Best wishes
Torsten.

Connectez-vous pour commenter.

Plus de réponses (1)

Selva Karna
Selva Karna le 17 Août 2017
fs = 500;
t = 0:1/fs:10-1/fs;
x = abs(sin(2*pi*3*t));
p=find(x==1)
  1 commentaire
Stephen23
Stephen23 le 17 Août 2017
Modifié(e) : Stephen23 le 17 Août 2017
This answer is very fragile, and does not handle floating-point errors at all. This is not a general solution for this task (try changing fs to 499 and see what happens).
Read these to know why testing for equality of floating-point values is a bad way to write code:
and a hundred other discussion of this topic.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by