How do i get index of a closest value from an array?
3 ビュー (過去 30 日間)
古いコメントを表示
Hello ,
My array is
a=[0 200 900 1000 1200 1798 1799 1801 2000 2700 3601]
I want to find all the index of numbers which are multiples of 900. In case the multiples are not present in the array, find the index of the closest number matching the multiples.
I want to find for multiples of 900
I tried this
Index= mod(a,900) == 0
index_chunk=find(Index == 1)
but it does not give me index of the closest number of multiples of 900.
0 件のコメント
回答 (2 件)
Jan Orwat
2015 年 7 月 10 日
Try something like this:
divisor = 900;
how_close_is = abs(mod(a+divisor/2,divisor)-divisor/2);
index_chunk=find(how_close == min(how_close));
or add a parameter:
closer_than = 10; % adjust to your needs
index = abs(mod(a+divisor/2,divisor)-divisor/2) <= closer_than;
index_chunk = find(index);
Thorsten
2015 年 7 月 10 日
編集済み: Thorsten
2015 年 7 月 10 日
N = round(max(a)/900);
for i = 1:N, [~, ind(i)] = min(abs(a - 900*i)); end
3 件のコメント
Thorsten
2015 年 7 月 18 日
編集済み: Thorsten
2015 年 7 月 18 日
To include 0, use
for i = 0:N, [~, ind(i+1)] = min(abs(a - 900*i)); end
To store the indices in a cell C, when all the a's a stored in cell A:
for j = numel(A) % loop through all a's
a = A{j};
for i = 0:N, [~, ind(i+1)] = min(abs(a - 900*i)); end
C{j} = ind;
end
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!