Group Abstract Group Abstract

Message Boards Message Boards

0
|
13.6K Views
|
10 Replies
|
3 Total Likes
View groups...
Share
Share this post:

Finding Peaks with Signal Data

Posted 10 years ago

Hi All,

I have a question regarding FindingPeaks with Signal Data in ListLinePlot. I have two columns with data and am trying to find the Peaks of the second column (the first column are the x-data in seconds). The outcome of the number of peaks are = 32, but only 1 peak showed on the plot at 1 second. What is wrong? Please can you help?enter image description here

See file attached. Thanks.

data=test[[All,2]]; peaks=FindPeaks[data];First/@peaks;Length[peaks]; ListLinePLot[test,Epilog->{Red,PointSize[0.03],Point[peaks]},PlotStyle->Directive[Green,Thin]}]
Attachments:
POSTED BY: Jos Klaps
10 Replies

No need for real-time output. All of this analysis is after-the-fact regarding a plant upset.

POSTED BY: Richard Klopp

Marco Thank you, this is extremely helpful. Funny you mention over-sampled. You should see the original data, which is sampled 12 times even more frequently. This is telemetry data from a large machine, and high-frequency sampling is required to resolve certain mechanical responses, but certainly not thermal responses. The data example I supplied here is an example of a thermal response. Kindest regards,

Rich

POSTED BY: Richard Klopp

Dear Richard,

that is indeed, interesting. And the mechanical responses might be on a much faster time scale than the thermal ones. A long time ago I looked at data from milling and had rather high resolution measurements. I believe that Mathematica should be able to deal with this kind of data. (You might use alternatives to the Import function though...)

Do you need the results in (near) real-time?

Best wishes,

Marco

POSTED BY: Marco Thiel
POSTED BY: Marco Thiel
POSTED BY: Marco Thiel

See attached notebook with 1/12 the data. I am sure there is an explanation, but I don't understand the behavior difference between FindPeaks[ , 400], 500, and 600. Perhaps I am simply asking too much of FindPeaks. FindPeaks[ ,500] gets closest to the result I am seeking, in terms of scale.

Attachments:
POSTED BY: Richard Klopp

I have a 1-D list of data with about 3 million elements. The data looks like noise to the naked eye, but it is not noise. If I apply FindPeaks to a 60k-element sub-list Taken from somewhere in the midst of the original data, FindPeaks[sublist,315,0] does a pretty decent job of finding the peaks at the scale I need, finding 22 peaks. If I do FindPeaks[originallist,315,0], I get 25 peaks and none are in the subset. The found peaks are clustered at the front end of the original list. Any clues what is going on? I wish I could share the notebook, but I'm not sure how to do that with 3M points.

POSTED BY: Richard Klopp
POSTED BY: Daniel Lichtblau

Hi Henrik,

I'm very pleased with your support and tips. This is what I'm looking for. Thank You.

Regards,......Jos

POSTED BY: Jos Klaps

Hi Jos,

the way you calculate the peaks you get a result in the form {{index (!), value}, ...}. One possibility is to define your data as a time series and do it like so (compare with documentation on FindPeaks - under "Details and Options"):

ts = Transpose[test];
peaks = Normal@FindPeaks[TimeSeries[ts[[2]], {ts[[1]]}]]; 

Regards -- Henrik

POSTED BY: Henrik Schachner
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard