Matlab 如何从表中正确删除NaN值

Matlab 如何从表中正确删除NaN值,matlab,nan,Matlab,Nan,在Matlab中阅读Excel电子表格后,不幸的是,我的结果表中包含了NAN。例如,这个Excel表格: 将导致此表: 出现附加的NAN列的位置。我尝试使用以下代码段删除NAN: measurementCells = readtable('MWE.xlsx','ReadVariableNames',false,'ReadRowNames',true); measurementCells = measurementCells(any(isstruct(measurementCells('TIM

在Matlab中阅读Excel电子表格后,不幸的是,我的结果表中包含了NAN。例如,这个Excel表格:

将导致此表:

出现附加的NAN列的位置。我尝试使用以下代码段删除NAN:

measurementCells = readtable('MWE.xlsx','ReadVariableNames',false,'ReadRowNames',true);
measurementCells = measurementCells(any(isstruct(measurementCells('TIME',1)),1),:);
但是,这将导致一个
0x6
表,不再显示任何值。如何在不从表中删除任何数据的情况下正确删除NAN?

以下任一操作:

tab = tab(~any(ismissing(tab),2),:);
或:

如果要删除包含一个或多个缺少值的行

如果您想用其他值替换缺少的值,请阅读
fillmissing
()和
标准化功能的工作原理。这些例子非常详尽,应该可以帮助您找到最适合您需要的解决方案


最后一个解决方案是使用
EmptyValue
参数在调用
readtable
函数时发现(并以您喜欢的方式操纵)值
NaN
。但这只适用于数字数据。

根据定义,“不删除数据而删除NAN”是不可能的!你期望结果是什么样的
Var5
Var6
是数字类型的列,因此不能有空白元素,因此为NAN。您可以将它们转换为字符数组,并使用空字符串,但最终将数据转换为笨拙的数据类型似乎很麻烦。了解您为什么要删除NAN可能会有所帮助。您的主要问题是使用
readtable
,它输出常量变量类型的列,当您需要常量变量类型的行时,我无法再现您的结果(即没有额外的NAN列)。确保Excel文件的“G”列中没有任何空格。不要删除NAN,而是在以后考虑它们。您有
isnan
功能来检查nan。如果您真的想删除NAN,可以在函数
readtable
中使用参数对('EmptyValue',value)将它们替换为您选择的某个值。NAN面临的主要问题是,我无法通过measurementCells{{nameOfRow},:}获得一行数据因为Matlab告诉我,并不是那一行中的所有值都属于同一类型,因为NaN似乎属于cell类型,而不是双NaN。所以,将所有的NAN转换为double类型的NAN也可以解决我的问题。
tab = rmmissing(tab);