【发布时间】:2018-01-05 00:51:30
【问题描述】:
在使用isnan(x) 运算符时,我注意到输出是一个数组,其中0s 和1s 对应于元素是否为NaN。
过滤掉 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 次,正如预期的那样。
我在这里错过了什么?
【问题讨论】:
-
x(true(10, 1))会给你x但是。 -
请注意,MATLAB 的行为可能因数据类型而异。