find the last non-zero column in matrix in pre-allocated matrix
조회 수: 5 (최근 30일)
이전 댓글 표시
Hello, My matlab code is creating very very matrix and I didn't pre-allocate it before. Because I always need to know the size of matrix. However, due to memory problem I had to make a very large zero matrix and fill in the matrix with new value. Any my question is to how to find the last non-zero column in that matrix "in the most efficient way". for exam if I have a matrix M = zeros(10^9,6) and there is some value like the follwign matrix how to find row 6 as the answer. Thank you,
M= [3388 3279 3284 3383 3279 3278; 3388 3383 2043 2038 2038 0; 3387 3388 2038 2037 2032 2037; 3388 3389 3384 3383 2038 0; 3388 3279 3280 3389 3274 3279; 0 0 0 0 0 0; 0 0 0 0 0 0]
댓글 수: 0
채택된 답변
Mohammad Abouali
2014년 10월 16일
편집: Mohammad Abouali
2014년 10월 16일
1) if you are looking for las non-zero column why the answer to your example is row 6?
2) if you are looking for last non-zero row, shouldn't the answer to your example be 5? in that case find(any(M,2),1,'last') would give 5 as the answer
댓글 수: 0
추가 답변 (3개)
Geoff Hayes
2014년 10월 16일
편집: Geoff Hayes
2014년 10월 16일
Mahsa - try using the any function to determine which rows have at least one non-zero element as
nzRows = any(M,2);
nzRows will be a vector of ones and zeros where a one indicates that the row has at least one non-zero element, and a zero indicates that all elements in the row are all zero. The use find to find the last element in nzRows that is a one. Type doc find for details on how to use this function.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!