如何在我的数据中忽略NaN?

时间:2013-09-13 10:19:07

标签: matlab nan

有没有办法忽略函数中的NaN?

我想获得eig值忽略NaN,因为函数eig不处理NaN

我有矩阵NxM并且它包含NaN值我必须在它上面应用函数eig但是这个函数不适用于NaN值所以要么我会删除NaN,要么是否有函数直接执行( nanmax它给出了忽略NaN的最大值

1 个答案:

答案 0 :(得分:4)

很抱歉,但是没有神奇的方法可以忽略矩阵中的NaN元素然后计算特征值。您需要数组中的所有元素来计算特征值。检查NaN或删除其他人建议的NaN的工具根本没用。如果只是删除数组的元素,则数组将不再是正方形。因此,MATLAB将数组转换为向量,这是一个完全不同的东西!将NaN转换为零极不可能为数组产生有意义的特征值。

像nanmean这样的工具也不是很有用,它做的很简单。 (Nanmean可以完成它的工作,因为它计算每列的平均值,其中简单地忽略NaN。它只是将非NaN元素相加,然后除以nan-NaN的数量。)

最后,如果你有一个不是正方形的NxM矩阵,那么计算特征值是没有意义的。特征值仅针对平方矩阵定义。也许你正在考虑奇异的价值观,或者你正在尝试做主要的组成部分。在其中任何一种情况下,您仍然需要完整矩阵,除非您打算简单地删除其中包含nans的所有行或列。

没有免费的午餐。您需要确定整个矩阵以计算该矩阵的特征值。至少,你需要重新思考你的问题,因为按照你的要求尝试去做是没有意义的。