从另一个数组的整数元素创建新数组? 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的主要内容,如果未能解决你的问题,请参考以下文章