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

Matlab 如何从数据集中删除NaN值?,matlab,Matlab,对于MATLAB来说,如果您是新手,我们将不胜感激 我有一个数据集,在一列中有1000个元素,大多数元素是数字,但有些是NaN的。有没有办法,我可以,1。找到他们,然后2。删除它们并将它们放入变量中(或仅删除它们) 我是否必须以相反的方式执行此操作,并查找和删除非NaN(数字)并将其存储在变量中?使用逻辑索引提取非NaN的元素,然后将其存储在您喜欢的任何位置。下面是它的工作原理。如果x是包含NaN的列向量,y=~isnan(x)将给出一个逻辑向量y,使得当x(1)不是NaN时,| y |=| x

对于MATLAB来说,如果您是新手,我们将不胜感激

我有一个数据集,在一列中有1000个元素,大多数元素是数字,但有些是NaN的。有没有办法,我可以,1。找到他们,然后2。删除它们并将它们放入变量中(或仅删除它们)


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

使用逻辑索引提取非NaN的元素,然后将其存储在您喜欢的任何位置。下面是它的工作原理。如果x是包含NaN的列向量,
y=~isnan(x)
将给出一个逻辑向量y,使得当x(1)不是NaN时,| y |=| x |,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官方文档。

使用逻辑索引提取非NaN的元素,然后将它们存储在任何您喜欢的位置。下面是它的工作原理。如果x是包含NaN的列向量,
y=~isnan(x)
将给出一个逻辑向量y,使得当x(1)不是NaN时,| y |=| x |,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官方文档。

相当于@sadeghmir答案的选项:

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

>x
1 2 3 5 6 9

相当于@sadeghmir答案的选项:

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

>x
1 2 3 5 6 9

看看matlab命令“isnan”。看看matlab命令“isnan”。