Matlab的nanmean()函数不超过1

问题描述:

其他方面的工作从mathworks helpnanmean()的拿这个例子:Matlab的nanmean()函数不超过1

X = magic(3); 
X([1 6:9]) = repmat(NaN,1,5) 

X = 

    NaN  1 NaN 
    3  5 NaN 
    4 NaN NaN 

>> y = nanmean(X,2) 
??? Error using ==> nanmean 
Too many input arguments. 

为什么会显示错误,即使文件说,平均可在任何尺寸dim采取X as y = nanmean(X,dim)?谢谢。

我刚好运行你的代码,我没有得到任何错误。在particlar这里是我跑:

>> X = magic(3); 
X([1 6:9]) = repmat(NaN,1,5) 

X = 

    NaN  1 NaN 
    3  5 NaN 
    4 NaN NaN 

>> y = nanmean(X,2) 

y = 

    1 
    4 
    4 


>> which nanmean 
C:\Program Files\MATLAB\R2010b\toolbox\stats\stats\nanmean.m 

我能想到的唯一的事情是,你有你的路径上的不同版本的nanmean.m。尝试一个which nanmean,看看它是否指向统计工具箱。

+0

它指向一个不同的自定义工具箱:'C:\ Program Files \ MATLAB \ R2010b \ toolbox \ mgstat \ nanmean.m'。如何改变? – Pupil 2012-07-19 04:13:49

+0

把'C:\ Program Files \ MATLAB \ R2010b \ toolbox \ stats \ stats'放在你的路径中比...... \ mgsstat更高,实际上只是将... \ msgstat放在你的路径之外。它似乎不是一个“常规”的matlab工具箱,至少它不在我的发行版中。使用'editpath'来改变matlab的路径。 – mwengler 2012-07-19 04:17:01

+1

我刚刚复制'nanmean.m'并复制到我当前的文件夹中。由于管理权限,我没有权限对路径进行更改:(。感谢您的回答btw。 – Pupil 2012-07-19 04:23:09

这里的原因是:

如果X含有沿一些维度所有NaN值的向量,一旦NaN值被移除所述载体是空的,所以剩余的元素的总和为0。由于平均涉及0除法,其值为NaN。输出NaN不是NaN值的平均值。

看: http://www.mathworks.com/help/toolbox/stats/nanmean.html

+0

我在帮助页面上阅读了这条语句。然而,这并不是原因,因为即使你没有像'X = magic(3)'这样的'NaN'并且找到它的'nanmean',你仍然会得到上面的错误:'>> y = nanmean(X ,2) ???错误使用==> nanmean 输入参数太多.' – Pupil 2012-07-19 04:00:08

+0

事实上,这不是事实。我只是尝试了nanmean(魔法(3),2),它工作。你的MATLAB版本是什么? – TJ1 2012-07-19 04:07:37

+0

'>> nanmean(magic(3),2) ???错误使用==> nanmean 输入参数太多。' – Pupil 2012-07-19 04:09:08