дык знак-то производная всё равно меняет, обозначая, так сказать,
точки экстремума :) для синуса правда это не столь выражено. как
для "прямоугольника", но всё равно, при статобработке, думаю
получится весьма точно для борьбы с локальными экстремумами, кроме есс-но программных фильтров типа "скользящего среднего, медианы или ещё чего, эффективным видится следующий алгоритм.
- предварительное вычисление частоты (периода) по FFT, для определения размера окна обработки (фильтрации) в полпериода
- в заданном окне собираем сэмплы с метками времени, и фильтруя, скжем по медиане, вычисляем линию тренда
- на фильтрованной линии ищем глобальные экстремумы, если они есть, то это смена знака производной (локальные уже отфильтрованы, и в окне не может быть больше одного периода) с запоминанием его временнОй координаты
- двигаем окно далее по сигналу (перескакиваем на следующее "окно")
- повторяем вычисления
** в принципе алгоритм легко распараллеливается для многоядерных числодробилок.
- раз в полсекунды-секунду запускает обработку полученного вектора временнЫх координат экстремумов со статистической матобработкой.