删除零和连接向量

时间:2012-09-14 08:57:56

标签: matlab

我有一个数组

x =

    404  1  1  5  5  1  1  5  0  0   0   0   0   0   0   0  0
    405  2  5  5  4  5  2  5  4  5   3   3   2   5   3   3  0
    406  5  5  3  5  3  5  4  3  3   1   4   0   0   0   0  0

我想删除所有除了直接在非零整数右边的那些。即除了整行中的最后一个零之外的所有零。 (例如,x=x(x~0);只删除零,但然后返回一个列向量。所以这不太正确)然后连接所有剩余的向量。

像这样:

404  1  1  5  5  1  1  5  0 405  2  5  5  4  5  2  5  4  5   3   3   2   5   3   3  0 406  5  5  3  5  3  5  4  3  3   0   4

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

怎么样

x = x.';
dx = x ~= 0;
dx = dx | circshift(dx, 1)

y = x(dx).'

所以,细分:

  1. 找到转置数组的非零逻辑索引
  2. 将此数组向下循环移位1并将其与原始逻辑进行OR运算,以便在非零后直接输入零
  3. 使用这些逻辑索引数组并转置以完成操作