How to select the maximum points of the absolute values of a sin function
5 views (last 30 days)
Show older comments
Mauricio Galván García Luna
on 17 Aug 2017
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 Comment
Adam
on 17 Aug 2017
Edited: Adam
on 17 Aug 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 );
Accepted Answer
More Answers (1)
Selva Karna
on 17 Aug 2017
fs = 500;
t = 0:1/fs:10-1/fs;
x = abs(sin(2*pi*3*t));
p=find(x==1)
1 Comment
Stephen23
on 17 Aug 2017
Edited: Stephen23
on 17 Aug 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.
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!