2012-07-19 115 views
3

其他方面的工作從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)?謝謝。

回答

1

我剛好運行你的代碼,我沒有得到任何錯誤。在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

1

這裏的原因是:

如果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