在最终号码后删除零

时间:2014-09-25 22:17:56

标签: matlab matrix zero

我有一个关于如何在最终数字后从矩阵中删除额外零的问题。

A= [5 4 0 2 3 8 9 0 0 0 0 0 0]

结果:

B= [5 4 0 2 3 8 9];

2 个答案:

答案 0 :(得分:1)

基于{p> find的方法 -

A(1:find(A,1,'last')) %// find the last nonzero index and index A until that
基于

nonzeros + find的A方法,至少有一个非零项 -

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的A方法,至少有一个非零项 -

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 :(得分: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);