从两列数组创建表



>我有两个行数相同的列数组:

>> size(values)
ans =
       12915           1
>> size(positions)
ans =
       12915           1

values包含一些 NaN 条目:

>> sum(isnan(values))
ans =    
        2500

而"仓位"由整数值填充:

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

如果我尝试使用这两列创建一个table,我会收到一条难以理解的(对我来说)错误消息:

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

我尝试删除了 NaN 值但没有成功:我不断收到相同的错误消息。但是,我无法理解错误消息。

怎么了?

您很可能已经创建了一个名为 table 的变量。如果您键入whos table则可能会得到如下结果:

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

您可以通过简单地清除table变量来解决此问题:clear table 。这将保留函数但删除变量。

请注意,您已经在某处创建了table变量,因此您可能也在某处使用它(特别是如果您有一个主要包含脚本而不是函数的大型项目)。仅删除变量可能会导致代码损坏。因此,我建议您在脚本中搜索变量名称,并确保不会破坏任何内容。

table(a,b) 表示法用 a 和 b 为矩阵表编制索引。由于您的值是非整数,因此您会收到此错误消息。我想,您打算做的是合并两个列向量。为此,您可以使用 [ ],作为

表 = [值位置]

仍然会包含 nan 值,但我想这不会打扰你

校正

但是,如果您想将表中的值添加到它们的位置,您可以使用

表(位置)=值

最新更新