Repalce zero element by the number before it ?
이전 댓글 표시
If I have array called N,
N = [2 0 7 0 9 10 0 0 11 0 0 ];
I want to create new array M that have [2 2 7 7 9 10 10 10 11 11 11]
Here is other example
N=[ 0 1 4 5 6 7 0 10 0 0 0]
the one I would create is
M=[0 1 4 5 6 7 7 10 10 10 10].
I would replace each zero in array N by the number before it except the first zero.
Thank you in advance.
채택된 답변
추가 답변 (2개)
KSSV
2019년 1월 17일
N=[ 0 1 4 5 6 7 0 10 0 0 0] ;
M = N ;
idx = find(N==0) ; % get the indices of zeros
while ~isempty(idx)
idx(idx==1) = [] ; % remove the index if zero is at one
M(idx) = M(idx-1) ; % replace zeros with previous values
idx = find(M==0) ;
idx(idx==1) = [] ;
end
madhan ravi
2019년 1월 17일
편집: madhan ravi
2019년 1월 17일
EDITED
N = [2 0 7 0 9 10 0 0 11 0 0 ];
M=N;
M(M==0)=NaN;
M=fillmissing(M,'nearest')
Gives:
M =
2 2 7 7 9 10 10 10 11 11 11
N=[ 0 1 4 5 6 7 0 10 0 0 0];
M=N;
M(M==0)=NaN;
M=fillmissing(M,'previous');
M(1)=0
Gives:
M =
0 1 4 5 6 7 7 10 10 10 10
댓글 수: 5
Willim
2019년 1월 17일
madhan ravi
2019년 1월 17일
편집: madhan ravi
2019년 1월 17일
Change 'nearest' to 'previous' , see edited answer.
madhan ravi
2019년 1월 17일
If you find it helpful you can vote for it.
Willim
2019년 1월 17일
madhan ravi
2019년 1월 17일
편집: madhan ravi
2019년 1월 17일
What? Did you see the first example in my answer?
카테고리
도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!