2011-08-17 62 views
3

我有一個巨大的數據數組,其中在每一行我想提取特定列,然後平均我提取的數字。這是我的代碼:下標索引必須是真正的正整數或邏輯與matlab中的均值函數的錯誤

for i=1:1000 
    temp=data(i,:); 
    index_data=temp([1,10,11,12,19]); %columns I want to extract 
    data_final(i,1)=mean(index_data(~isnan(index_data))); 
end 

我在第一次迭代時出現錯誤。所提取的陣列是

[NaN NaN NaN NaN 15.64] 

而我所得到的,當我鍵入index_data(〜isnan(index_data))是15.64,我所期待的。不過,我得到的

??? Subscript indices must either be real positive integers or logicals. 
Error in ==> mean(index_data(~isnan(index_data))) 

從命令行調用這個錯誤產生同樣的錯誤。但是,如果我嘗試使用協方差函數(cov),我不會得到錯誤。這對我來說似乎很奇怪!

感謝您的幫助!

+0

另請參閱[這個問題](http://stackoverflow.com/questions/20054047/subscript-indices-must-either-be-real-positive-integers-or-logicals -generic-sol)[通用解決此問題](http://stackoverflow.com/a/20054048/983722)。 –

回答

12

我懷疑你已經定義了一個與內建函數同名的變量mean。您可以檢查使用:

which mean 

爲了解決這個問題,從存儲器中刪除變量:clear mean,然後糾正這個變量的所有引用...

0

我也有類似的問題。在我的例子中的錯誤是由於使用mean作爲變量名稱,這也恰好是一個函數的名稱。

由於這是一個意思,MATLAB認爲關鍵字的意思是作爲變量名稱,但不是函數。

我希望我的評論有助於

相關問題