Assign nearest maximum value.
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MakM
le 9 Fév 2022
Réponse apportée : Image Analyst
le 9 Fév 2022
I have a vector named A=[10,20,30,40], Suppose I need to find the number 25 from that vector, as 25 is not present in this vector, it should give me 30, i.e, nearest maximum value. How can I do that?
0 commentaires
Réponse acceptée
Walter Roberson
le 9 Fév 2022
A=[10,20,30,40]
q = 25
A(find(A >= q, 1))
However, your meaning of "nearest" is not completely clear. If the query had been for 24 instead of 25, then should 20 be output, since (24-20) < (30-24) ? And what does "nearest" mean if A is not in sorted order? Closest position in either direction that has a value at least as great? Position that has the least positive difference in value? And what should be done if the query value is out of range for A ?
2 commentaires
Walter Roberson
le 9 Fév 2022
idx = find(A >= q, 1);
if isempty(idx); idx = numel(A); end
nearest = A(idx)
Plus de réponses (2)
Jan
le 9 Fév 2022
Why 30 and not 20? Both have a distance of 5.
A = [10,20,30,40];
S = 25;
[~, index] = min(abs(A - S));
A(index)
Image Analyst
le 9 Fév 2022
Try this:
% Set up sample values.
A = [10, 20, 30, 40];
searchValue = 25;
% Get the distance from the array to the search value.
diffs = abs(A - searchValue)
% Find the min distance.
minDistanceValue = min(diffs)
% Find all indexes where the min difference occurs.
locations = find(diffs == minDistanceValue) % Returns [2, 3] since those locations are both 5 away from 25.
% If multiple locations, get the max of the values that meet the criteria.
maxValue = max(A(locations)) % Returns 30
0 commentaires
Voir également
Catégories
En savoir plus sur Shifting and Sorting Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!