查找仅包含零的行
Find rows that contain only zeros
我在 MATLAB 中有一个巨大的矩阵。现在有些行只包含零。
我可以使用函数 find
来查找仅包含 个零的所有行吗?
您可以使用 any
查找任何具有非零的行,然后取反结果。我们使用第二个输入来指定我们要跨列(第二维)应用操作。
row_has_all_zeros = ~any(data, 2)
如果您想要索引而不是逻辑数组,只需将 find
应用于结果:
indices = find(row_has_all_zeros);
如果需要,您可以获得更快的速度(取决于您的数据集),方法是首先查找部分零行(在此示例中长度为 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)
n = length(matrix);
这一行将为您提供矩阵中的行数。
ids = setdiff(1:n,find(sum(matrix,2)));
ids 将为您提供仅包含零的行号(索引)。
我在 MATLAB 中有一个巨大的矩阵。现在有些行只包含零。
我可以使用函数 find
来查找仅包含 个零的所有行吗?
您可以使用 any
查找任何具有非零的行,然后取反结果。我们使用第二个输入来指定我们要跨列(第二维)应用操作。
row_has_all_zeros = ~any(data, 2)
如果您想要索引而不是逻辑数组,只需将 find
应用于结果:
indices = find(row_has_all_zeros);
如果需要,您可以获得更快的速度(取决于您的数据集),方法是首先查找部分零行(在此示例中长度为 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)
n = length(matrix);
这一行将为您提供矩阵中的行数。
ids = setdiff(1:n,find(sum(matrix,2)));
ids 将为您提供仅包含零的行号(索引)。