Assign nearest maximum value.
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
MakM
el 9 de Feb. de 2022
Respondida: Image Analyst
el 9 de Feb. de 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 comentarios
Respuesta aceptada
Walter Roberson
el 9 de Feb. de 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 comentarios
Walter Roberson
el 9 de Feb. de 2022
idx = find(A >= q, 1);
if isempty(idx); idx = numel(A); end
nearest = A(idx)
Más respuestas (2)
Jan
el 9 de Feb. de 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
el 9 de Feb. de 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 comentarios
Ver también
Categorías
Más información sobre Shifting and Sorting Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!