У меня вышеупомянутый сигнал.Красные точки, где производная равна нулю.Я пытаюсь найти два максимальных / минимальных пика в середине, но производная не равна нулю в этих точках.Я использовал код ниже:
df1=gradient(A);
pv_a = (df1==0);
plot(x,A, x(pv_a),A(pv_a), 'r*');
Я также сглаживал (двухпроходное скользящее среднее 50 точек) и нормализовал сигнал в диапазоне от 1 до -1.Любая помощь будет отличной.Я хочу обнаружить минимальный пик и максимальный пик в сигнале, используя градиент.Я знаю, что могу использовать findpeaks или localmax / min, но я сравниваю этот метод с этим, и он не работает, и мне интересно, почему.
ОБНОВЛЕНИЕ:
Я обнаружил, что если я смотрю на значения, меняющиеся с отрицательного на положительное, я нахожу пики.Я думаю, что это работает, а не проверка на нули.
idmax=strfind(sign(df1),[-1 1]);
idmin=strfind(sign(df1),[1 -1])
plot(x,A, x(idmax),A(idmax), 'r*', x(idmin),A(idmin), 'b*');