【问题标题】:matlab corrcoef function returns NaNmatlab corbrcoef 函数返回 NaN
【发布时间】:2017-12-03 01:53:39
【问题描述】:

我正在尝试使用一些数组计算corrcoef Kendall、Spearman 和 Pearson),它输出NaN

有人可以提出方法来知道它在哪里以及为什么会失败吗?因为数组太大了,我无法查看每个元素。

如果没有,我在哪里可以找到 corrcoef 的完整代码?我已经搜索过,但没有找到。

【问题讨论】:

  • 您应该发布一个重现问题的最小示例。根据您提供的信息,很难说出问题所在。要查看corrcoef 代码,只需键入edit corrcoef。但是不要保存对原始函数的任何更改!改用其他名称保存

标签: matlab


【解决方案1】:

您的输入很可能包含NaN。您可以使用isnan 检查是否有任何NaN 元素,并使用find 查找它们的索引:

>> A = randn(10,1);
>> A([3,8]) = NaN;
>> find(isnan(A))
ans =
     3
     8

至于查找源代码,您可以在编辑器中突出显示函数名称,然后按ctrl+D。请注意,某些功能是内置的或 mex 的,因此您将无法阅读它们的源代码。但是corrcoef不是其中之一,所以你可以阅读代码。

【讨论】:

  • 嗯,数组好像没有NaN。我把你说的代码,它返回“空矩阵:0×1”
  • 然后提供一个重现问题的示例。
  • 我是怎么做到的?使用 fprintf 到 .txt 文件?只知道有用
【解决方案2】:

这可能是因为其中一个数组的方差/标准偏差为零。因此,在除以 std 或 var 的相关系数计算中(不管它是如何实现的),实际上是除以零,产生 NaN。

【讨论】:

    猜你喜欢
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 2021-05-10
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多