-2

有什么方法可以忽略函数中的 NaN 吗?

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

我有矩阵 NxM 并且它包含 NaN 值我必须在其上应用函数 eig 但此函数不适用于 NaN 值所以我将删除 NaN 或者如果有一个函数可以直接执行它(nanmax 它给出忽略 NaN 的最大值)

4

1 回答 1

4

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

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

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

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

于 2013-09-13T11:48:10.947 回答