Matlab - 为什么会员不起作用?

时间:2014-12-01 11:20:41

标签: matlab cell-array

我有一个不同的细胞载体&多余的公司名称。还有一系列有趣的公司。我试图弄清楚,有趣公司出现在大矩阵中的哪个位置。我对所有的外表感兴趣。 我的代码由于某种原因不起作用。 ismember总是返回错误。

Comps = Data0(:,7);
for i = 1: length(relCompQ)
    comp = relCompQ{i,1};
    c(:,i) = find(ismember(Comps,comp));
end

错误:

  

使用cell / ismember> cellismemberR2012a(第192行)输入A的错误   class char和class char的输入B必须是字符串的单元格数组,   除非一个是字符串。

单元格/成员出错(第56行)

  

[varargout {1:max(1,nargout)}] = cellismemberR2012a(A,B);

两个向量都具有以下价值:' Nike',' Adidas'' BMW'等

1 个答案:

答案 0 :(得分:3)

  

类char的输入A和char类的输入B必须是字符串的单元格数组,除非一个是字符串。

这意味着单元格中的每个条目都必须是一个字符串,在这种情况下,它不是。如果您的单元格数组包含数值,或者甚至包含矩阵,则会出现此错误。

例如,这很好(字符串的单元格数组和字符串)

ismember({'b','c'},'b');

这不是:

ismember({'b',[1 2]},'b');
ismember({'b',[]},'b');
ismember({'b',NaN},'b');

最容易混入你的单元阵列的可能是空矩阵。在这些情况下,我总是建议使用调试工具(dbstop if error是我们的朋友),以便仔细检查发生了什么。您认为变量应该包含或包含的内容,以及实际包含的内容并不总是相同的。

如果它确实包含空,请参阅this question以获取有关如何处理它的建议。