查找仅包含零的行

时间:2016-08-02 17:13:19

标签: matlab matrix rows extraction

我在MATLAB中有一个巨大的矩阵。现在有些行只包含零。

我可以使用函数find查找仅包含 零的所有行吗?

3 个答案:

答案 0 :(得分:4)

您可以使用any查找具有非零值的任何行,然后取消结果。我们使用第二个输入来指定我们要跨列应用操作(第二维)。

row_has_all_zeros = ~any(data, 2)

如果您想要索引而不是逻辑数组,只需将find应用于结果:

indices = find(row_has_all_zeros);

答案 1 :(得分:0)

如果需要,您可以通过首先查找部分零行(在此示例中为长度10)并通过选择行进一步计算来获得更快的速度(取决于您的数据集)。

row_has_first10_zeros = sum(data(:,1:10),2);
row_has_all_zeros = sum(data(~rows,:),2);

indices = find(~row_has_first10_zeros)
indices = indices(~row_has_all_zeros)

答案 2 :(得分:0)

n = length(matrix);

此行将为您提供矩阵中的行数。

ids = setdiff(1:n,find(sum(matrix,2)));

ids将为您提供仅包含零的行号(索引)。