如何删除包含所有整数的矩阵行?

时间:2017-05-15 15:55:47

标签: matlab matrix vector

假设我有一个包含整数和非整数的7x3矩阵。我想要的是删除所有只包含整数的行。一个例子如下:

A = [1, 1, 2
     2, 1.5, 1
     3, 1.5, 2
     1, 2, 1
     2, 2.5, 1
     3, 2.5, 1
     1, 3, 2];

我的输出应该是:

B = [2, 1.5, 1
     3, 1.5, 2
     2, 2.5, 1
     3, 2.5, 1];

拜托,我怎么可能实现这个目标?谢谢。

2 个答案:

答案 0 :(得分:3)

B = A;
B(all(mod(A,1)==0, 2), :) = [];

答案 1 :(得分:2)

另一种方法是采用矩阵的floor并将其与原始矩阵进行比较。因此,您将找到两者之间相等的行并删除它们。

B = A;
B(all(floor(B) == B, 2), :) = [];

这背后的逻辑非常简单。 floor截断矩阵,以便只保留整数(即没有小数点)。然后,您可以将其与原始矩阵进行元素比较。一旦取floor,那些原来是整数的值仍然是整数,那些整数的元素将因此得到true结果。那些浮点元素会给你false。然后,我们使用all独立查看每一行,并查看行的所有列是否为true,这意味着整行包含整数。因此,我们将找到这些行并将它们从最终矩阵中移除以产生所需的结果。

我们得到:

>> format long g;
>> B

B =

                         2                       1.5                         1
                         3                       1.5                         2
                         2                       2.5                         1
                         3                       2.5                         1