pares de coordenadas dadoPatternSequence con casos en Mathematica para encontrar picos
data = {{1, 0}, {2, 0}, {3, 1}, {4, 2}, {5, 1},
{6, 2}, {7, 3}, {8, 4}, {9, 3}, {10, 2}}
me gustaría extraer picos y valles, por lo tanto:
{{4, 2}, {5, 1}, {8, 4}}
Mi solución actual es esta torpeza:
Cases[
Partition[data, 3, 1],
{{ta_, a_}, {tb_, b_}, {tc_, c_}} /; Or[a <b> c, a > b < c] :> {tb, b}
]
que se puede ver al comenzar triplicando el tamaño del conjunto de datos usando Partition
. Creo que es posible utilizar Cases
y PatternSequence
para extraer esta información, pero este intento no funciona:
Cases[
data,
({___, PatternSequence[{_, a_}, {t_, b_}, {_, c_}], ___}
/; Or[a <b> c, a > b < c]) :> {t, b}
]
que los rendimientos {}
.
No creo que algo está mal con el patrón, ya que funciona con ReplaceAll
:
data /. ({___, PatternSequence[{_, a_}, {t_, b_}, {_, c_}], ___}
/; Or[a <b> c, a > b < c]) :> {t, b}
que da el primer pico correcta, {4, 2}
. ¿Que está pasando aqui?
¡Bienvenido a StackOverflow ArgentoSapiens! Por favor vote las respuestas que le gusten usando los botones de votación, y no se olvide de aceptar la respuesta que desee como la respuesta final usando el botón de marca de verificación. Es posible que desee esperar un poco para obtener más respuestas antes de hacerlo. –