nombrar linewidth linea limites grosor graficas graficar graficacion español escalera ejes comandos cambiar matlab

matlab - linewidth - Encuentra el valor máximo local en el vector



linewidth matlab español (4)

¿Quieres encontrar cada ocurrencia de 4,5 y 7? tratar:

Output = find(A>3)

esto devolverá un vector 1xN con las posiciones de cualquier cosa sobre 3 ... no estoy seguro si esto es lo que quieres

Alguien podría ayudarme. Yo uso el programa Matlab.

Supongamos que tengo el vector A,

A = [0 0 1 2 3 5 0 0 0 0 0 2 3 6 7 0 0 0 0 1 1 2 3 4 1]

Me gustaría obtener los valores máximos locales y la ubicación del vector A. Entonces, la respuesta que me gustaría obtener es la siguiente.

maxValue = 5, 7 y 4;

maxLocation = 6, 15 y 24;

gracias por su tipo.


Debe ser mucho más claro sobre sus objetivos. Parece que deseas encontrar los máximos locales en un vector.

¿Siempre tendrá vectores (NO realmente matrices, que generalmente es una palabra para denotar una cosa con dos dimensiones que no son de unidad) que tienen un máximo local que desea encontrar? ¿Elegirás encontrar todos los máximos locales? Si es así, entonces esto funcionará ...

A = [0 0 1 2 3 5 0 0 0 0 0 4 5 6 7 0 0 0 0 1 1 2 3 4 1]; n = numel(A); ind = 2:(n-1); maxLoc = ind(find((diff(ind-1) > 0) & (diff(ind) < 0))); % in case the max occurs at an end if A(2) < A(1) maxLoc = [1,maxLoc]; end if A(n) < A(n-1) maxLoc = [maxLoc,n]; end maxVal = A(maxLoc);

Pero ¿qué pasa con el vector

A = [0 1 2 2 1 0];

¿Qué deseas ver ahora?

Nuevamente, necesita pensar en sus requisitos. Cuáles son tus necesidades ¿Cuál es el objetivo?

Una vez que lo hayas hecho, tus problemas serán más fáciles de resolver y más fáciles de responder.


Si tiene la caja de herramientas de Procesamiento de señal, entonces findpeaks debería ser lo que desea:

[pks,locs] = findpeaks(A)

Para referencia futura, debe saber que lo que quiere encontrar son máximos locales. Decir que desea encontrar el valor máximo hace que parezca que desea los máximos globales (que serían 7 en este caso).


Supongo que está buscando valores máximos locales, es decir, valores que son mayores que los que los rodean.

Mi solución sería esta:

Loc = find(diff(A)(2:end)<0 & diff(A)(1:(end-1))>0)+1; Val = A(Loc);

Loc contendrá las posiciones de los máximos locales, y Val contendrá los valores en esos máximos locales. Tenga en cuenta que NO encontrará máximos en los bordes, como está escrito. Si desea detectarlos también, debe modificarlo levemente:

Loc = find([A(1)>A(2),(diff(A)(2:end)<0 & diff(A)(1:(end-1))>0),A(end)>A(end-1)]); Val = A(Loc);