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