Finding the first instance of a value in an array
81 ビュー (過去 30 日間)
古いコメントを表示
I have an array with many rows and many columns. I want to search the array row by row, find the first instance of a value that is above 170 (yellow cells below) and then store the colum index it was found in (green cells below) in a new array. If there are no values above 170, then return 0 as the index.
This should explain it:
0 件のコメント
採用された回答
Walter Roberson
2021 年 10 月 29 日
YourArray = randi([100 180], 10, 20)
idx = sum(cumprod(YourArray <= 170, 2),2) + 1;
idx( idx == size(YourArray,2) + 1 ) = 0;
idx
1 件のコメント
その他の回答 (1 件)
Chris
2021 年 10 月 29 日
A = magic(5)
for idx = 1:size(A,1)
test = find(A(idx,:)>22,1);
if isempty(test)
test = 0;
end
colidxs(idx,1) = test;
end
colidxs
A is your array, and replace 22 with 170.
1 件のコメント
Chris
2021 年 10 月 29 日
For something a bit faster, try
A = magic(5);
colidxs = rowfun(@findidx,table(A))
function idx = findidx(row)
idx = find(row > 22,1);
if isempty(idx)
idx = 0;
end
end
参考
カテゴリ
Help Center および File Exchange で Structures についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!