有什么方法可以忽略函数中的 NaN 吗?
我想得到 eig 值忽略 NaN 因为函数 eig 不处理 NaN
我有矩阵 NxM 并且它包含 NaN 值我必须在其上应用函数 eig 但此函数不适用于 NaN 值所以我将删除 NaN 或者如果有一个函数可以直接执行它(nanmax 它给出忽略 NaN 的最大值)
抱歉,没有什么神奇的方法可以忽略矩阵中的 NaN 元素然后计算特征值。您需要数组中的所有元素来计算特征值。像其他人建议的那样检查 NaN 或删除 NaN 的工具根本没有用。如果您只是删除数组的一个元素,则该数组将不再是正方形。所以 MATLAB 把数组变成了向量,这是完全不同的东西!并且将 NaN 转换为 0 极不可能为数组产生有意义的特征值。
像 nanmean 这样的工具也不是很有用,它做一件非常简单的事情。(Nanmean 可以完成它的工作,因为它计算每列的平均值,其中 NaN 被简单地忽略。它只是对非 NaN 元素求和,然后除以 nan-NaN 的数量。)
最后,如果你有一个不是正方形的 NxM 矩阵,那么计算特征值是没有意义的。特征值仅针对方阵定义。也许您正在考虑奇异值,或者您正在尝试做主成分。在任何一种情况下,您仍然需要完整的矩阵,除非您打算简单地删除所有包含 nan 的行或列。
天下没有免费的午餐。您将需要确定整个矩阵来计算该矩阵的特征值。至少,您需要重新考虑您的问题,因为尝试按照您的要求去做是没有意义的。