2
행렬의 각 행에서 선행 0을 없애고 싶지만 한 번에 하나의 0을 제거하는 것으로 제한하십시오.MATLAB - 한 번에 하나씩 행렬의 각 행에서 선행 0을 제거 하시겠습니까?
이것은 현재 해결책이지만 더 간단한 방법이 있습니까?
a = [ 0 0 0 0 0 0 0 0 0 0
0 0 5 2 3 4 0 0 0 0
0 0 0 1 2 3 4 0 0 0
0 0 1 2 3 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 ]
b=zeros(size(a));
for j=1:size(a,2)
for i=1:size(a,1)
temp=find(a(i,:),1,'first');
candelete=min(2,temp);
b(i,1:end-candelete+1)=a(i,candelete:end);
end
a=b
end
편집 :
이0 0 0 0 0 0 0 0 0 0
0 5 2 3 4 0 0 0 0 0
0 0 1 2 3 4 0 0 0 0
0 1 2 3 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
두 번째는 2 0을 제거 할 것이다, 그래서 : 는 내가 처음 출력은 첫 번째 앞에 0이 제거 가질 수 있도록, 모든 반복을 인쇄 할거야 에 ...
감사합니다. 그러나 첫 번째 선행 제로 만 제거하여 행렬을 인쇄 할 수있는 방법이 있습니까? 나는 여러분의 솔루션에 이르기까지 모든 반복을 인쇄하기를 원합니다. – RootFAIL
오, 알겠습니다 : a (i, :) = circshift (a (i, :), max (1-startIndex (i), - 1)) – RootFAIL
@RootFAIL : 찾고. – gnovice