Moving NaN elements from the last columns to the first column, iteratively
조회 수: 3 (최근 30일)
이전 댓글 표시
Hello community,
I'm struggling to figure out a way to automatize a problem I'm confronting on Matlab. Here is a fictitious matrix that replicates my issue (mine is much bigger, but always has between 0 and 2 NaN observations at the end of the matrix):
A = [1 2 3 4 5 6 7 8 NaN NaN;
1 2 3 4 5 6 7 8 9 NaN;
1 2 3 4 5 6 7 8 9 10]
For those rows that have NaNs, I want to move the NaN observations to the front of the matrix, so as to have this;
A = [NaN NaN 1 2 3 4 5 6 7 8;
NaN 1 2 3 4 5 6 7 8 9;
1 2 3 4 5 6 7 8 9 10]
This is a code which works for me with a row vector (i.e A = [1 2 3 4 5 6 7 8 NaN NaN]):
while isnan(A(end))
A = A(1:end-1);
A = [NaN,A];
end
I can't seem to figure out how to broaden the loop to the general case presented above (the 3x10 matrix).
Thank you!
댓글 수: 0
채택된 답변
추가 답변 (1개)
Bob Thompson
2019년 6월 10일
Do you want your numeric values in ascending order? If so you should be able to do the following:
A = sort(A,2,'MissingPlacement','first');
참고 항목
카테고리
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!