2016-02-04 47 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