【发布时间】:2014-08-25 06:07:16
【问题描述】:
基本上,我有一个数据矩阵,其中包含许多由 NaN 表示的“孔”,我想检索在单个列中聚集 少于 4 次的所有 NaN 的索引。
例如与矩阵:
A =
23 12 NaN 56 60 21 NaN
60 56 94 22 45 NaN NaN
23 55 19 83 NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN
84 99 43 32 89 12 NaN
76 92 73 47 22 12 10
23 55 12 93 61 94 20
NaN NaN NaN NaN NaN NaN NaN
41 16 83 39 82 37 43
14 78 92 40 81 29 60
它会返回:
ans =
[4; 5; 6; 10; 16; 17; 18; 22; 25; 28; 29; 30; 34; 40; 41; 42; 46; 58; 70; 82]
到目前为止,我有一个向量,其中包含所有 NaN 值的索引
nan_list=find(isnan(A(:)))
但我不知道如何在不使用循环的情况下从该向量中提取序列号,这太昂贵了。我还尝试了类似于 b3 here 发布的答案的方法,将所有 NaN 切换为未出现在矩阵中的值,但该代码不能用于其他数据集。
感谢您的任何建议!
【问题讨论】:
-
您的 NaN 小于 4 的集群可以重叠,或者您在 4 的重叠集群中查看?还有你的
ans代表什么。看不到与A的连接。
标签: matlab matrix vectorization nan