假设我有一个包含整数和非整数的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];
拜托,我怎么可能实现这个目标?谢谢。
答案 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