MATLAB新手,對此有任何幫助將不勝感激。如何從數據集中刪除NaN值?
我有一個數據集,在1列中有1000個元素,大多數元素是數字,但有些是NaN。有辦法我可以,1.找到他們,並2.刪除他們,並把他們在一個變量(或只是刪除他們)?
我是否必須以相反的方式做到這一點,找到並刪除非NaN(數字)並將它們存儲在變量中?
MATLAB新手,對此有任何幫助將不勝感激。如何從數據集中刪除NaN值?
我有一個數據集,在1列中有1000個元素,大多數元素是數字,但有些是NaN。有辦法我可以,1.找到他們,並2.刪除他們,並把他們在一個變量(或只是刪除他們)?
我是否必須以相反的方式做到這一點,找到並刪除非NaN(數字)並將它們存儲在變量中?
使用邏輯索引來提取不是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。
一個選項相當於@ sadeghmir的回答是:
x = [1 2 3 NaN 5 6 NaN NaN 9];
x(x==NaN)=[];
>x
1 2 3 5 6 9
看一看MATLAB命令 「isnan」。 – mhopeng