Automatically identify shape of curve

7 views (last 30 days)
Sara
Sara on 29 Jan 2015
Commented: Bharat Hegde on 3 Sep 2022
Hello!
I have a bunch of sensor signals that all look about the same, but slightly different. See figure below.
What I need is a safe and reproducable way of automatically detecting the parts of the curve I've marked with red circles. Esentially when the "bump" starts and where it ends. The corresponding point of each curve has to be detected, so that the durations and integrals are comparable to each other.
The above were "normal" signals. I would also like to be able to detect abnormal signals, shown in figure below (mixed with some normal signals). It is not a clear bump with just empty space below. I just need to be able to automatically detect whether or not the circled is present. I.e. clear bump (as first figure) or not. For each individual signal.
The sensor signals are stored in cell arrays containing as many 5000x1 double arrays as there are signals, each array containing the data points.
Please help me. I'm experienced in programming in general, but Matlab is not my native tounge and I've never done any signal processing before.
Thank you!
  2 Comments
li tian
li tian on 11 Jan 2016
I have met the similar problem,I want to know your question have been solved.And if it have been solved ,can you tell the thought or the paper about it.Thank you very much.
Bharat Hegde
Bharat Hegde on 3 Sep 2022
Did anyone solve this problem? Can this be achieved through neural networks? I am interested in identifying different regions of a curve by it's shape.

Sign in to comment.

Answers (1)

John D'Errico
John D'Errico on 29 Jan 2015
I'm sorry, but we will probably not be of too much help here. Why?
Because it is you who needs to define exactly what it is about those curve sections that makes them special. It is only you who knows why you selected that part of the curve, and how you picked it out by eye.
If I could offer one idea, you might consider taking every curve you have, using a sliding window along the curve, of perhaps 100 points. So each curve will yield roughly 4900 such windows of the curve. Over many such curves, this will allow you to generate a large set those sliding windows.
Now, use principle components analysis on that large database of windowed curve fragments. This will allow you to reduce those segments into a lower dimensional space, where any segment can be represented by amounts of perhaps only a dozen or so fundamental shapes.
Finally, identify the segments that are of interest to you, and see where they lie in terms of the component amounts. It is likely that you will be able to generate a test based on these component amounts that will flag whenever the PCA "sees" such a curve shape again.

Community Treasure Hunt

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

Start Hunting!