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 个)
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!