首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >isnan中的索引

isnan中的索引
EN

Stack Overflow用户
提问于 2017-07-29 04:48:45
回答 1查看 133关注 0票数 2

在使用isnan(x)运算符时,我注意到输出是一个数组,无论元素是否为NaN,其01都对应。

过滤出NaN元素的逻辑方法是x(find(~isnan(x))),因为find()返回索引。令我惊讶的是,x(~isnan(x))也给出了同样的结果。

检查一下,~isnan(x)只是一个由1和0组成的数组,对于x = rand(10,1)的简单情况,我将all(~isnan(x) == ones(10, 1))设为真。但是当我运行x(ones(10, 1))时,我得到的数组中只有x的第一个元素重复了10次,这与预期不谋而合。

这里我漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-29 05:07:47

MATLAB使用了多种类型的索引。

isnan返回逻辑索引。也就是说,大小为x矩阵或向量,其中如果元素是nan,则它是1。输出是逻辑“二进制”变量

find查找任何不是0的元素并给出它的索引。输出是整数。

因此,这两个输出都可以用作索引,因此它们将得到相同的结果。也就是说,如果您不需要实际的索引(在上面的示例中不需要),就不要使用它。在上面的例子中,find速度很慢,而且是多余的。

现在,如果像上面一样创建1数组,它会将其视为索引(类似于find),因此它会10次返回第一个元素的值。原因是函数ones不返回逻辑变量,而是返回实际数字(实数)。如果您用true替换ones或首先将结果转换为二进制,它将被视为逻辑索引。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45382173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档