[Scilab-users] find and locate local maxima

Clément David Clement.David at esi-group.com
Tue Mar 16 16:27:26 CET 2021


Hello David,

After reading the Matlab documentation page, it seems pretty simple to implement using Scilab : and $ symbols:

function [pks, locs]=findpeaks(data)
    ii = find(d(1:$-2) < d(2:$-1) & d(2:$-1) >= d(3:$));
    pks = data(ii+2);
    locs = ii + 2;
endfunction

data = [25 8 15 5 6 10 10 3 1 20 7];
plot(data)

[pks,locs] = findpeaks(data);
plot(locs, pks, 'xr');

Note: using oct2py and pims might also be an option for simple cases but these wrappers are complex to use and data need to be copied at language boundaries.

Regards,

Clément

From: users <users-bounces at lists.scilab.org> On Behalf Of CHEZE David 227480
Sent: Tuesday, March 16, 2021 2:53 PM
To: Users mailing list for Scilab <users at lists.scilab.org>
Subject: [Scilab-users] find and locate local maxima

Hi all,

I'm looking for function that could find and locate every local maxima of any discrete time signal (timeseries), similar to Matlab or Octave function findpeaks(), scipy find_peaks(). Is anyone aware if something similar is already available in Scilab ? (I already browsed a little bit and it don't seem so...)
If not in Scilab macros, any hint to use the Octave or scipy function directly from Scilab?
More globally it seems that Octave Forge could be linked with Python (from oct2py import octave
# Load the Octage-Forge signal package.
octave.eval("pkg load signal")), does someone ever tried to bridge similarly in Scilab ? oct2sci

Kind regards,

David

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20210316/be9d2b5d/attachment.htm>


More information about the users mailing list