Discussion:
peak detection in (x,y,z) data
(too old to reply)
Rahul
2009-09-25 20:25:38 UTC
Permalink
I have a numerical (x,y,z) dataset with multiple peaks (local maxima) in it
that I want to detect. I've seen many routines for (x,y) peak detection but
none that I know so far do it for (x,y,z) data.

Any routines around that I am missing?
--
Rahul
Gallon
2009-09-26 08:42:54 UTC
Permalink
Post by Rahul
I have a numerical (x,y,z) dataset with multiple peaks (local maxima) in it
that I want to detect. I've seen many routines for (x,y) peak detection but
none that I know so far do it for (x,y,z) data.
Any routines around that I am missing?
--
Rahul
I hope I don't get in any trouble for a non-Octave solution, but I've
used this for locating extrema in many dimensions, quite successfully:

http://search.cpan.org/~aqumsieh/AI-Genetic-0.05/Genetic.pm

Sincerely,

Greg Allen
Not-affiliated with any respectable organization.
raghu330
2009-09-26 10:27:29 UTC
Permalink
Hi there!
In matlab, there is a function called 'findpeaks()', that finds all
the peaks (local max/min) in a timeseries data.. I see that octave
usually doesn't come with a builtin function for 'findpeaks'.. but you
could try and tweak it for octave.. you might be able to find the src
on google..
Cheers & ATB
Raghu
Post by Gallon
Post by Rahul
I have a numerical (x,y,z) dataset with multiple peaks (local maxima) in it
that I want to detect. I've seen many routines for (x,y) peak detection but
none that I know so far do it for (x,y,z) data.
Any routines around that I am missing?
--
Rahul
I hope I don't get in any trouble for a non-Octave solution, but I've
http://search.cpan.org/~aqumsieh/AI-Genetic-0.05/Genetic.pm
Sincerely,
Greg Allen
Not-affiliated with any respectable organization.
highegg
2009-09-26 17:16:31 UTC
Permalink
Post by Rahul
I have a numerical (x,y,z) dataset with multiple peaks (local maxima) in it
that I want to detect. I've seen many routines for (x,y) peak detection but
none that I know so far do it for (x,y,z) data.
Any routines around that I am missing?
--
Rahul
The problem basically is that in 3D, it's no longer so simple to
define a peak of the sample, unless your data is on a regular grid.
If it suffices for your needs, you can first interpolate your data to
a grid, using griddata or some OctaveForge package (such as OctGPR or
data-smoothing), then find peaks on the grid.
On a grid, you can simply find the peaks as those points that are
either less or greater than all of their neighbours.

hth
Rahul
2009-09-26 20:50:18 UTC
Permalink
Post by highegg
On a grid, you can simply find the peaks as those points that are
either less or greater than all of their neighbours.
Good point. I guess first I need to pass it through some sort of noise
reduction filter. Otherwise I'll have every tiny bump of noise on a
scanline show up as a peak. Correct?
--
Rahul
Loading...