Assign nearest maximum value.
4 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Walter Roberson
2022-2-9
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 个评论
Walter Roberson
2022-2-9
idx = find(A >= q, 1);
if isempty(idx); idx = numel(A); end
nearest = A(idx)
更多回答(2 个)
Jan
2022-2-9
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
2022-2-9
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!