2
Я хочу избавиться от ведущих нулей в каждой строке матрицы, но ограничить ее устранением одного нуля за раз.MATLAB - Избавиться от ведущих нулей в каждой строке матрицы, по одному за раз?
Это мое текущее решение, но есть ли более простой способ сделать это?
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, :) = circshift (a (i, :), max (1-startIndex (i), - 1)) – RootFAIL
@RootFAIL: Я думаю, что мой обновленный ответ - это то, что вы находясь в поиске. – gnovice