使用单元格数组从表中检索数据 - Matlab

时间:2017-10-09 20:41:32

标签: arrays matlab

我在Matlab crsp中有一个表,以及用作键的数字单元数组。我想使用存储为变量的单元格数组从表中检索信息。我的代码如下:

function y = generateWeights(permno_vector,  this_datenum, crsp)

  crsp(crsp.PERMNO == permno_vector,:);  

crsp定义为表,而permno_vector是单元数组。它包含一些用于检索信息的permnos。

在这种情况下,我的代码无效,不允许我访问crsp中的值。我们如何使用向量数组访问表值?

1 个答案:

答案 0 :(得分:1)

正如詹姆斯·约翰斯通指出的那样,你发布的代码的第一个问题是它没有为y分配任何东西,所以写完你的功能并没有返回值。一旦你解决了这个问题,我认为你看到的错误是Undefined operator '==' for input arguments of type 'cell'.在提问时,包含这类细节总是有帮助的。

语法

crsp(crsp.PERMNO == x,:)

会返回crsp等于PERMNO的{​​{1}}行。但是,如果要提供可能值的列表,并返回表中目标变量与列表中的某个值匹配的表的所有行,则需要使用x

ismember

如果crsp(ismember(crsp.PERMNO, cell2mat(permno_vector)),:) 是单元格数组,或者只是:

permno_vector

如果您可以提供crsp(ismember(crsp.PERMNO, permno_vector),:) 作为数字向量(当然假设permno_vector中的数据也是数字)。