0

这是一个非常具体的问题。我有一个 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
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中做这个。谢谢 :)

4

1 回答 1

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 应该是您正在寻找的输出。

于 2013-08-07T16:39:41.010 回答