У меня возник вопрос о том, как удалить лишний ноль из матрицы после окончательного номера.Удаление нуля после окончательного номера
A= [5 4 0 2 3 8 9 0 0 0 0 0 0]
Результат:
B= [5 4 0 2 3 8 9];
У меня возник вопрос о том, как удалить лишний ноль из матрицы после окончательного номера.Удаление нуля после окончательного номера
A= [5 4 0 2 3 8 9 0 0 0 0 0 0]
Результат:
B= [5 4 0 2 3 8 9];
find
подход, основанный на -
A(1:find(A,1,'last')) %// find the last nonzero index and index A until that
nonzeros + find
подход, основанный на А с по меньшей мере, один ненулевой элемент -
nnzA = nonzeros(A) %// Get all non zero entries
A(1:find(A==nnzA(end))) %// Get the index of last nonzero entry and keep A until that
strfind
подход, основанный на А, по меньшей мере, один ненулевой элемент -
pattern_start = strfind([A~=0 0],[1 0])%//indices of all patterns of [nonzero zero]
A(1:pattern_start(end)) %// Index A until the last pattern
Если A
уверен содержать, по меньшей мере, одно ненулевое значение, вы можете сделать это с помощью max
:
[~, ind] = max(A(end:-1:1)~=0);
A(end-ind+2:end) = [];
Или
[~, ind] = max(cumsum(A~=0));
A(ind+1:end) = [];
Или, в общем случае, если вы не возражаете предупреждение :-)
A = deblank(A);
Если A - это все нули, это усложнит вопросы для нас обоих! Угадайте 'deblank' и' find (... 'last') 'будет работать тогда. – Divakar