2016-02-04 44 views
1

我有相同數量的行的兩列的陣列創建表:從兩個柱陣列

>> sum(isnan(positions)) 
ans = 
    0 

在兩個陣列的一些值:

values(randi(length(values), 10, 1)) 
ans = 
    0.0290 
    0.1000 
    0.0430 
     NaN 
    0.0310 
    0.9700 
    0.3170 
    0.1750 
     NaN 
    0.1410 

positions(randi(length(positions), 10, 1)) 
ans = 
    5 
    8 
    12 
    11 
    10 
    6 
    10 
    3 
    9 
    4 

如果我試圖創建與兩列,我得到一個uncomprehensible(對我來說)錯誤信息table

>> table(values, positions) 
Subscript indices must either be real positive integers or logicals. 

我試圖和刪除NaN值沒有成功:我不斷收到相同錯誤信息。但是,我無法理解錯誤消息。

有什麼問題?

+1

'values'看起來像比率。你確定你沒有把零分成零嗎?幾天前我有這個問題。您可以使用'max(values)'檢查是否有零除。如果它返回'Inf',那麼你將零分。 –

+2

檢查是否存在('table','var')'得到1,如果是的話,那麼你應該清除名稱爲'table'的變量。 – rst

回答

1

您很可能創建了一個名爲table的變量。如果鍵入whos table你可能會得到一個結果,例如:clear table

whos table 
    Name  Size   Bytes Class  Attributes  
    table  1x1     8 double  

您可以通過簡單地清除table變量解決這個問題。這將離開該功能,但刪除該變量。

請注意,您已在某處創建了table變量,因此您可能也會在某處使用它(特別是如果您的大型項目主要是腳本而不是函數)。只是刪除變量可能會導致代碼損壞。因此,我建議您在腳本中搜索變量名稱,並確保不會破壞任何內容。

+0

是的,情況就是如此。我正在研究一個我收到的非常複雜的腳本,我沒有注意到'表'已經被定義。在過去的幾年中,我一直主要從事其他編程語言,我習慣於'保留'關鍵字,這是matlab奇怪的缺失。謝謝你的親切回答。 –

-2

表(a,b)表示法用a和b索引矩陣表。由於你的值是非整數,你會得到這個錯誤信息。 我想,你打算做的是合併兩列向量。爲此,您可以使用[],如

表= [值位置]

這仍將包含NaN值,但我想這不會打擾你

修正

如果您想在表中添加數值,可以使用

表(位置)=值

+1

這完全是錯誤的:table是MATLAB中的一個有效函數,如果'table'被定義爲一個變量,那麼你所提出的只是true。 – rst

+0

@RobertStettler對於比R2013b更新的MATLAB版本,這只是錯誤的。 – excaza