【发布时间】:2018-05-25 06:56:11
【问题描述】:
在 Matlab 中阅读 Excel 电子表格后,不幸的是,我的结果表中包含了 NaN。以这个 Excel 表格为例:
将导致此表:
出现额外的 NaN 列。我尝试使用以下代码 sn-p 删除 NaN:
measurementCells = readtable('MWE.xlsx','ReadVariableNames',false,'ReadRowNames',true);
measurementCells = measurementCells(any(isstruct(measurementCells('TIME',1)),1),:);
但是,这会产生一个0x6 表,不再存在任何值。如何在不从表中删除任何数据的情况下正确删除 NaN?
【问题讨论】:
-
“在不删除数据的情况下删除 NaN”根据定义是不可能的!你期望结果是什么样的?
Var5和Var6是数字类型列,因此不能有空白元素,因此是 NaN。您可以将它们转换为字符数组并使用空字符串,但是以一种尴尬的数据类型结束数据似乎很麻烦。了解 为什么 您要删除 NaN 可能会有所帮助。 您的主要问题是使用readtable输出常量变量类型的列,当您想要 rows 常量变量类型 -
我无法重现您的结果(即没有额外的 NaN 列)。确保 Excel 文件的“G”列中没有任何空格。
-
不要删除 NaN,而是稍后将它们考虑在内。你有
isnan函数来检查NaN。如果您真的想删除 NaN,您可以使用函数readtable中的参数对 ('EmptyValue', value) 将它们替换为您选择的某个值 -
NaN 面临的主要问题是我无法通过 measureCells{{nameOfRow},:} 获取一行数据,因为 Matlab 告诉我并非所有值该行与 NaN 的类型相同,似乎是 cell 类型,而不是双 NaN。因此,将所有 NaN 转换为 double 类型的 NaN 也可以解决我的问题。