Cómo extraer y trazar solo picos mínimos y máximos de una matriz, -análisis gráfico- Con Matlab o Excel
Estoy haciendo análisis de video.
La matriz de resultados finales que obtengo es algo así como:
signal =
Columns 1 through 7
73960 73960 73960 73960 68102 68102 68102
Columns 8 through 14
68102 19187 19187 19187 19187 14664 14664
Columns 15 through 21
14664 14664 13715 13715 13715 13715 30832
Columns 22 through 28
30832 30832 30832 53031 53031 53031 53031
Columns 29 through 35
56897 56897 56897 16104 16104 16104 16104
Columns 36 through 42
15188 15188 15188 15188 13973 13973 13973
Nota: la matriz real que obtengo suele ser 600 +
Así que cuando trazo esto obtengo un gráfico de muy mal aspecto, por lo que quiero filtrar este conjunto y solo mantener los ** picos máximos y mínimos ** máximos y mínimos locales para que el gráfico tenga ondas más agradables
¿Hay alguna manera de hacerlo con MATLAB?
si no, ¿puedo hacerlo con Excel? ya que generalmente guardo esta matriz en la hoja de Excel como esta
0.1 68102
0.15 19187
0.2 14664
0.25 13715
0.3 30832
0.35 53031
0.4 56897
0.45 16104
0.5 15188
0.55 13973
0.6 21437
0.65 66950
0.7 65356
0.75 22562
0.8 14154
0.85 13938
0.9 20692
0.95 72823
1 69975
1.05 15328
1.1 14494
1.15 13681
1.2 14205
1.25 65278
1.3 63055
1.35 16999
1.4 14050
1.45 14245
En el que la primera columna es el tiempo (eje y) y la segunda columna es la amplitud. (Eje x)
Uso esta fórmula para contar los máximos locales (Gracias a brettdj from stackoverflow.com)
=SUMPRODUCT(--(B2:B149>B1:B148),--(B2:B149>B3:B150))
Y esta fórmula para contar los mínimos locales
=SUMPRODUCT(--(B2:B149<B1:B148),--(B2:B149<B3:B150))
Pero lo que necesito es filtrar la matriz para mantener solo los máximos y mínimos locales para que pueda obtener una curva bien dibujada sin ruido.