2014-03-02 57 views
0

我创建了一个数组tP,其中包含整数和非整数元素的混合。我想创建一个新的整数元素数组。从另一个数组的整数元素创建新的数组? MATLAB

我想的结果是在相同的形式被返回以用于,例如:

tP2=find(tP>300); 

即,其含有的整数值,而不是整数本身的列表元素号码列表。

从这个我会,然后选择所需的元素,像这样:

tP3=tP(tP2); 

要为整数做到这一点,我目前拥有的是:

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

但不是元素号码列表,我刚刚得到tP2=1返回。

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

+0

除了你的问题,看看逻辑索引。你也可以使用'tP3 = tP(tP> 300)' – Daniel

+0

我不明白你的问题,一个数组(aka矩阵)可以是double或者uint8或者任何其他类型,但是所有的元素都有相同的类型。什么数据类型是'tP2'?它是如何创建的? – Daniel

+1

'isinterger'是指数据类型。例如'double'可以有一个整数值,它仍然是一个double,而不是一个整型数据类型 –

回答

1

使用round

tp2 = find(tP == round(tP)); 
+0

问题解决了,非常感谢! – KLMac

0

由于夏嘉曦说,相较于round是检测整数的有效途径。

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

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

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

+0

感谢您的意见。我应该指定我为其他数组使用了这个元素数列表,所以会保留tP2,但我会在未来记住这个提示。 – KLMac

相关问题