Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何删除包含所有整数的矩阵行?_Matlab_Matrix_Vector - Fatal编程技术网

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

Matlab 如何删除包含所有整数的矩阵行?,matlab,matrix,vector,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]; 拜托,我怎么可能做到这一点?谢谢。另一种方法是取矩阵的值,并将其与

假设我有一个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];

拜托,我怎么可能做到这一点?谢谢。

另一种方法是取矩阵的值,并将其与原始值进行比较。因此,您将找到这两行之间相等的行,并删除这些行

B = A;
B(all(mod(A,1)==0, 2), :) = [];
B = A;
B(all(floor(B) == B, 2), :) = [];
这背后的逻辑相当简单<代码>楼层截断矩阵,以便只保留整数(即不保留小数点)。然后,您将按元素将其与原始矩阵进行比较。当您选择
下限
时,那些原本是整数的值仍然是整数,因此那些整数元素将给您一个
true
结果。那些浮点元素将为您提供
false
。然后,我们使用独立地查看每一行,并查看一行的所有列是否都是
true
,这意味着整行由整数组成。因此,我们将找到这些行,并将它们从最终矩阵中删除,以生成所需的结果

因此,我们得到:

>> format long g;
>> B

B =

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

另一种方法是取矩阵的值,并将其与原始值进行比较。因此,您将找到这两行之间相等的行,并删除这些行

B = A;
B(all(floor(B) == B, 2), :) = [];
这背后的逻辑相当简单<代码>楼层截断矩阵,以便只保留整数(即不保留小数点)。然后,您将按元素将其与原始矩阵进行比较。当您选择
下限
时,那些原本是整数的值仍然是整数,因此那些整数元素将给您一个
true
结果。那些浮点元素将为您提供
false
。然后,我们使用独立地查看每一行,并查看一行的所有列是否都是
true
,这意味着整行由整数组成。因此,我们将找到这些行,并将它们从最终矩阵中删除,以生成所需的结果

因此,我们得到:

>> format long g;
>> B

B =

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

在浮动中使用
==
相当危险,不是吗?例如,你最好不要把
B(全部)放在后面@Wolfie如果数字最初是整数,那么比较应该是好的。但是,一旦数字中有浮点数的味道,我们就应该拒绝它。在这种情况下,我可以不做公差比较。如果我将等式与ac进行比较,我只会在公差范围内进行比较实际上是浮点数,但是因为我们想确定一个数字是否是整数,我们可以跳过。这是一个我认为相等的时候,但总的来说你会在一个公差范围内进行比较,正如你所说的。谢谢大家的时间。两个答案看起来很相似,但我几乎会接受第一个。我会我刚刚发布了这个问题的修订版和更具挑战性(我认为)的版本。使用浮动的
==
是非常危险的,不是吗?(),你可能会更好地推迟
B(全部)(abs(floor(B)-B)@Wolfie如果数字最初是整数,那么比较应该是好的。但是,一旦数字中有浮点数的味道,我们就应该拒绝它。在这种情况下,我可以不做公差比较。如果我将等式与ac进行比较,我只会在公差范围内进行比较实际上是浮点数,但是因为我们想确定一个数字是否是整数,我们可以跳过。这是一个我认为相等的时候,但总的来说你会在一个公差范围内进行比较,正如你所说的。谢谢大家的时间。两个答案看起来很相似,但我几乎会接受第一个。我会我刚刚发布了这个问题的修订版和更具挑战性的版本。