特定列[删除最后为零元素的元素,然后从第一个零元素到结尾删除元素]

时间:2013-08-07 15:51:24

标签: matlab matrix

这是一个非常具体的问题。我有一个M * 3矩阵。第一列包含M组元素。它可能会遵循这一点。

0
0
0
0
1
1
1
1
1
1
1
1
1
0
0
0
0
0

我的兴趣只有1s和相应的其他列值。我可以删除零只得到一组新的矩阵,但有时可能会这样:

1
1
1
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1

当情况如上所述时,我想在开头忽略1并删除M * 3矩阵中的所有元素直到第1个,然后当它到达列中的第二个零开始时它可以删除所有值到列的末尾。 (所以它将是13 * 3矩阵)。

我在matlab中这样做。 谢谢:)

1 个答案:

答案 0 :(得分:2)

我们打电话给你的矩阵A:

firstCol = A(:, 1);

indices = find(firstCol);
check = find(diff(indices) ~= 1);

if (isempty(check) )
    Afinal = A(indices, :);
else
    indices2 = indices(check(1)+1:1:check(2));
    Afinal = A(indices2, :);
end

Afinal应该是你正在寻找的输出。