从另一个数组的整数元素创建新数组? MATLAB

Posted

技术标签:

【中文标题】从另一个数组的整数元素创建新数组? MATLAB【英文标题】:Create new array from integer elements of another array? MATLAB 【发布时间】:2014-03-02 20:26:52 【问题描述】:

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

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

tP2=find(tP>300);

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

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

tP3=tP(tP2);

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

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

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

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

【问题讨论】:

除了你的问题,看看逻辑索引。你也可以使用tP3=tP(tP>300) 我不明白你的问题,数组(又名矩阵)是双精度或 uint8 或任何其他类型,但所有元素都具有相同的类型。 tP2 是什么数据类型?它是如何创建的? isinterger 指的是数据类型。例如,double 可以有一个整数值,它仍然是一个double,而不是整数数据类型 @Daniel:一个元胞数组可以包含不同数据类型的元素。所以在那种情况下isinteger 可能会返回多个值(我没有费心去检查它是否可以用于元胞数组) 【参考方案1】:

使用round

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

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

感谢您的意见。我应该指定我也在使用其他数组的元素编号列表,因此将保留 tP2,但我会记住未来的提示。

以上是关于从另一个数组的整数元素创建新数组? MATLAB的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个数组创建一个对象的两个 valueForKey 元素的 NSArray

部分从另一个数组制作新数组

matlab如何创建数组

请问如何使用MATLAB进行元胞数组批量提取数据。

matlab怎么来统计数组元素个数

matlab一维数组怎么创建及怎样对每个元素进行赋值