フィルターのクリア

find the nearest value

75 ビュー (過去 30 日間)
crispin Donnelly
crispin Donnelly 2013 年 8 月 22 日
コメント済み: Walter Roberson 2016 年 5 月 9 日
Hi!
Can someone help with this problem please.....
if for example, q = [1 3 6 8 10 15]
find(q==8) returns ans = 4
find(q==9) returns Empty matrix: 1-by-0 because there is no value 9
...how do I query, find the value in q that is nearest to 9??

採用された回答

Iain
Iain 2013 年 8 月 22 日
q = [1 3 6 8 10 15];
v = 9;
[~,ans] = (min(abs(q - v)))
  1 件のコメント
crispin Donnelly
crispin Donnelly 2013 年 8 月 22 日
nice! thanks

サインインしてコメントする。

その他の回答 (1 件)

mohamed azuan wahari
mohamed azuan wahari 2016 年 5 月 9 日
編集済み: Walter Roberson 2016 年 5 月 9 日
find nearest value on matrix
Can someone help with this problem please.....
for example
a= 1250
matrix_b=[98 125 945 1005;
105 204 1105 1249;
200 250 1299 1450;
300 450 1350 1850]
want to find nearest equal or greater than a=1250
and the answer should be 1299
  2 件のコメント
Walter Roberson
Walter Roberson 2016 年 5 月 9 日
v = sort(matrix_b(:));
vidx = floor(interp1(v, 1:length(v), a, 'linear', 'extrap'));
if vidx ~= 0
result = b(vidx);
end
Or
v = sort(matrix_b(:));
vidx = find(v >= a, 1, 'first');
if ~isempty(vidx)
result = v(vidx);
end
or
v = sort(matrix_b(:));
[~, vidx] = histc(a, v);
if vidx ~= 0
result = v(vidx);
end
The middle of these is probably the easiest to think about, but it cannot be generalized to a list of a values like the other ones can (aside from the testing to be sure that a result was found.)
Walter Roberson
Walter Roberson 2016 年 5 月 9 日
If you have R2016a or later, then
v = sort(matrix_b(:));
result = interp1(v, v, a, 'previous');

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by