Replace values in matrix by first non-zero value in previous row
조회 수: 5 (최근 30일)
이전 댓글 표시
Hi, how can i replace zero values in a matrix by the first occurring non-zero value in that matrix if you would loop backwards in each column? I.e. how can i carry forward a value as long as its next value in the same column is zero (without looping through each value in the matrix!)
Example: m_start = [3;0;0;4;0;5] replace_non_zero_values (m_start) = [3;3;3;4;4;5]
Hope you can help, thanks very much! Steven
댓글 수: 0
채택된 답변
Stephen23
2018년 3월 5일
편집: Stephen23
2018년 3월 5일
>> M = [3;0;0;4;0;5];
>> idx = M~=0;
>> tmp = M(idx);
>> tmp(cumsum(idx))
ans =
3
3
3
4
4
5
Note this assumes that the first value is nonzero. You will need to think of how to deal with leading zeros!
댓글 수: 5
Arturo Camacho Lozano
2019년 6월 21일
편집: Arturo Camacho Lozano
2019년 6월 21일
Stephen's solution is very clever. Thanks!
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!