如何从数据集中删除NaN值?

时间:2016-03-03 02:34:12

标签: matlab

MATLAB的新手,对此有任何帮助将不胜感激。

我的数据集是1列中的1000个元素,大多数元素都是数字,但有些是NaN。有没有办法,1。找到它们,然后2.删除它们并将它们放入变量中(或者只是删除它们)?

我是否必须以相反的方式执行此操作并查找并删除非NaN(数字)并将其存储在变量中?

2 个答案:

答案 0 :(得分:3)

使用逻辑索引来提取非NaN的元素,然后将它们存储在您喜欢的任何位置。这是它的工作原理。如果x是包含NaN的列向量,y = ~isnan(x)将给出逻辑向量y,使得| y | = | x |如果x(1)不是NaN,则y(i)为1。您可以使用此逻辑向量来提取非NaN元素:

x = [1 2 3 NaN 5 6 NaN NaN 9];
y = ~isnan(x);   % now y is [1 1 1 0 1 1 0 0 1]
x = x(y)         % now x is [1 2 3 5 6 9]

逻辑索引功能强大且高效。你也可以说:

x = [1 2 3 NaN 5 6 NaN NaN 9];
x(isnan(x)) = -1   % now x is [1 2 3 -1 5 6 -1 -1 9]

有关逻辑索引的更多信息,请参阅官方Matlab文档here

答案 1 :(得分:1)

相当于@ sadeghmir回答的选项:

x = [1 2 3 NaN 5 6 NaN NaN 9];
x(x==NaN)=[];

>x
1 2 3 5 6 9
相关问题