2
行列の各行に先行ゼロを取り除きたいが、一度に1つをゼロにすることに制限する。MATLAB - 行列の各行の先行ゼロを1つずつ取り除きますか?
これは私の現在の解決策ですが、これを行う簡単な方法はありますか?
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
EDIT: 最初の出力のみ、最初の先行ゼロが削除されますように、私は、すべての反復を印刷したいよ:
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つのゼロが削除されている、とそうなります上の...
ありがとうございますが、最初の先頭ゼロだけを削除してマトリックスを印刷する方法がありますか?私はすべての反復をあなたのソリューションまで印刷したいと思っています。 – RootFAIL
ああ、私はそれを得た:a(i、:) =循環シフト(a(i、:)、max(1-startIndex(i)、 - 1)) – RootFAIL
@RootFAIL:私はあなたの更新答えがあなただと思う探している。 – gnovice