0

我创建了一个tP包含整数和非整数元素混合的数组。我想创建一个整数元素的新数组。

我想要的结果与返回的形式相同,例如:

tP2=find(tP>300);

也就是说,包含整数值的元素编号列表,而不是整数本身的列表。

然后我将从此选择所需的元素,如下所示:

tP3=tP(tP2);

要对整数执行此操作,我目前拥有的是:

tP2=find(isinteger(int16(tP)));

但不是元素编号列表,而是tP2=1返回。

为什么isinteger在这种情况下不起作用,我怎样才能达到我需要的结果?谢谢。

4

2 回答 2

1

利用round

tp2 = find( tP == round(tP) );
于 2014-03-02T20:41:06.733 回答
0

正如 Shai 所说,比较round是检测整数的有效方法。

接下来,除非您需要其他内容的匹配列表,否则您不需要find. 只是比较会创建一个掩码数组,掩码可以用于下标。

tP3 = tP(tP == round(tP));

摆脱tP2和调用find应该可以节省时间和内存。

于 2014-03-02T21:03:30.160 回答