我有一个大小为[672 x 8]的2D数组,其中我有几行,其中第一列和第二列中有一个值,另一行中有一个NaN
值。还有其他行在所有列中都有值。我想创建两个新数组,这样第一个数组只包含其中包含NaN
的元素,第二个数组中没有NaN
元素。
例如
第12行:
517 2850 NaN NaN NaN NaN NaN NaN
第13行:
652 2037 169 2243 44 2443 -2 2644
答案 0 :(得分:4)
尝试使用isnan
。
TF = isnan(A)
返回一个与矩阵A
大小相同的数组,其中包含逻辑“1”(true
),其中A
的元素为NaN
s,并且逻辑“0”(false
)它们不是(顺便说一句,对于复数z
,isnan(z)
返回true
,无论是实部还是虚部如果实部和虚部都是有限的或z
),则NaN
为false
和Inf
。
关于您的具体任务,要将原始矩阵拆分为两个,请执行以下操作:
TF = isnan(A); %// Determine which elements are NaNs
nan_rows = any(TF, 2); %// Determine rows that contain NaNs
B1 = A(nan_rows, :); %// Rows with NaN values
B2_nonans = A(~nan_rows, :); %// Rows without NaN values