删除符合特定条件的行

use*_*027 1 arrays matlab loops matrix

我在MATLAB中有一个矩阵如下:

A = [ 0, 0, 0;
      1, 2, 3;
      4, 2, 3;
      0, 0, 0;
      1, 3, 4 ];
Run Code Online (Sandbox Code Playgroud)

我想从第1行和第4行中删除零,这样我就可以得到以下矩阵:

B = [ 1, 2, 3;
      4, 2, 3;
      1, 3, 4 ];
Run Code Online (Sandbox Code Playgroud)

我做的是以下内容:

for i = 1:length(A)
    if (sum(A(i, :)) == 0)
        A(i, :) = [];
    end
end
Run Code Online (Sandbox Code Playgroud)

我知道问题是A大小正在发生变化,这就是问题所在.不幸的是,我无法解决它.你能给我一些提示吗?

Ras*_*hid 5

如果你想删除零和的行,这可能有帮助,

A(sum(A,2)==0,:)=[];
Run Code Online (Sandbox Code Playgroud)

如@LuisMendo所述,您可以使用

A(all(A,2)==0,:)=[];
Run Code Online (Sandbox Code Playgroud)

取决于您的标准.

  • 要删除包含全零的行:`A(all(A,2)== 0,:)= [];` (2认同)