valor una repmat posicion máximo maximos maximo matriz grafica fila extraer encontrar elementos buscar matlab closest

matlab - una - ¿Cómo encuentro valores cercanos a un valor dado?



valor maximo grafica matlab (5)

¿Qué tal min(abs(data - b)) ?

Tengo data = [1 1.2 1.3 1.5 1.8]

Quiero encontrar los valores más cercanos antes y después de los datos para este punto, b = 1.23

¿Cómo hago esto?


Aquí hay otro método. Los data vectoriales no necesitan ser ordenados b pueden ser positivos o negativos.

[~,I] = min(abs(data-b)); c = data(I);


Este método generaliza la respuesta de Doubt al caso en el que hay varios elementos en b que está buscando:

ind=knnsearch(data'',b) c=data(ind)

que devuelve el índice (o conjunto de índices), ind , del elemento (o elementos) más cercano en los data a los elementos enumerados en b .

Tenga en cuenta que los datos se transponen porque el conjunto que se debe buscar debe ser un vector de columna. Si tuviera múltiples elementos, también debería ser un vector de columna.

Además, este método se puede generalizar para dar el 2º, 3º, 4º ... vecinos más cercanos (ver documentación).

También se generaliza al caso cuando los datos son de mayor dimensión (si d dimensiones, test b tendría d columnas).


Si los datos están ordenados, puedes usar find:

i_lower = find(data <= b,1,''last''); i_higher = find(data >= b,1,''first''); lower_than_b = data(i_lower) higher_than_b = data(i_higher)


data = [1 1.2 1.3 1.5 1.8] b = 1.23 find(abs(data-b)==min(abs(data-b)))