我有一个关于如何在最终数字后从矩阵中删除额外零的问题。
A= [5 4 0 2 3 8 9 0 0 0 0 0 0]
结果:
B= [5 4 0 2 3 8 9];
答案 0 :(得分:1)
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);