finding last non-zero value from column
이전 댓글 표시
Given a matrix looking something like e.g. M = [ 1 1 1 1 1 1 ; 1 1 1 0 0 0 ; 1 1 0 0 0 0 ; 1 0 0 0 0 0; 0 0 0 0 0 0 ];
How can I find the coordinate (for plotting these values as a line) for which states the last non-zero element in each column?
For this example I want the coordinates for the column number [ 4, 3, 2, 1, 1, 1]
Would the same code work for 3D-matrix?
댓글 수: 2
Sean de Wolski
2011년 8월 15일
We could absolutely get the code to work for a 3d matrix, but you have to define what you want. Would you want a two d plane through the third dimension with each column's contribution, or would you like it reshaped?
Lizan
2011년 8월 15일
채택된 답변
추가 답변 (2개)
Andrei Bobrov
2011년 8월 15일
in your case
sum(M)
ADD
sum(cumsum(flipud(M~=0))~=0)
댓글 수: 3
Sean de Wolski
2011년 8월 15일
Nice, no reason for the ~=0 tests
sum(logical(cumsum(flipud(M))))
Lizan
2011년 8월 15일
Fangjun Jiang
2011년 8월 15일
sum() won't work for cases like [0 0;1 1]
Sean de Wolski
2011년 8월 15일
[junk, idx] = max(flipud(M),[],1); %flip it and find first maximizer
idx = size(M,1)-idx+1
for 3d:
[junk, idx] = max(flipdim(rand(10,10,10)>.5,1),[],1);
idx = size(M,1)-idx+1
카테고리
도움말 센터 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!