Find the index of first and last non zero in column

조회 수: 1 (최근 30일)
Teerapong Poltue
Teerapong Poltue 2021년 6월 2일
댓글: Chunru 2021년 6월 2일
I got the array as shown
I would like to extract the index (idx) of the first and last non zero in column, how can I do that.
The expected return of the code is
data(idx_first) = [1 1 2]
data(idx_last) = [1 5 5]

채택된 답변

Chunru
Chunru 2021년 6월 2일
x = [0 1 0 4; 1 2 0 1; 0 1 2 0; 0 0 0 0]
[m, n] = size(x);
ind = zeros(1, n);
for i=1:n
xlast = find(x(:, i), 1, 'last');
ind(i) = sub2ind([m n], xlast, i);
end
x(ind)
  댓글 수: 2
Teerapong Poltue
Teerapong Poltue 2021년 6월 2일
ther's a tiny problem on this code when the colum is entire 0, it caused error in sub2ind. How can I solve that?
Chunru
Chunru 2021년 6월 2일
[m, n] = size(x);
ind = nan(1, n);
for i=1:n
xlast = find(x(:, i), 1, 'last');
if ~isempty(xlast)
ind(i) = sub2ind([m n], xlast, i);
end
end
y = zeros(1,n);
ind0 = ~isnan(ind);
y(ind0) = x(ind(ind0))

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

KSSV
KSSV 2021년 6월 2일
A = [0 89 90 0 99 100 0] ;
id1 = find(A,1,'first')
id1 = 2
id2 = find(A,1,'last')
id2 = 6

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by