2014-09-25 3 views

ответ

1

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 
1

Если 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); 
+1

Если A - это все нули, это усложнит вопросы для нас обоих! Угадайте 'deblank' и' find (... 'last') 'будет работать тогда. – Divakar

Смежные вопросы