Ho data = [1 1.2 1.3 1.5 1.8]
Come posso trovare valori vicini a un determinato valore?
voglio trovare i valori più vicini prima e dopo dai dati di questo punto, b = 1.23
Come posso fare questo?
Ho data = [1 1.2 1.3 1.5 1.8]
Come posso trovare valori vicini a un determinato valore?
voglio trovare i valori più vicini prima e dopo dai dati di questo punto, b = 1.23
Come posso fare questo?
Che ne dici di min(abs(data - b))
?
se i dati vengono ordinati È possibile utilizzare Trova:
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)
Ecco un altro metodo. Il vettore data
non deve essere ordinato e b
può essere positivo o negativo.
[~,I] = min(abs(data-b));
c = data(I);
data = [1 1.2 1.3 1.5 1.8]
b = 1.23
find(abs(data-b)==min(abs(data-b)))
Questo non aggiunge nulla di più di quello che è già stato inserito in questo post come risposta. – rayryeng
Questo metodo generalizza la risposta di dubbio al caso in cui ci sono più elementi in b
che stai cercando per:
ind=knnsearch(data',b) c=data(ind)
che restituisce l'indice (o serie di indici) , ind
, dell'elemento (o degli elementi) più vicino in data
agli elementi elencati in b
.
Si noti che i dati vengono trasposti perché l'insieme da cercare deve essere un vettore di colonna. Se si hanno più elementi allora dovrebbe anche essere un vettore colonna.
Inoltre, questo metodo può essere generalizzato per fornire 2, 3, 4 ... vicini più vicini (consultare la documentazione).
Si generalizza anche al caso in cui i dati sono di dimensione superiore (Se d
dimensioni quindi test
e b
avrebbero d
colonne).
Non dimenticare abs ... – madth3