我有一个不同的细胞载体&多余的公司名称。还有一系列有趣的公司。我试图弄清楚,有趣公司出现在大矩阵中的哪个位置。我对所有的外表感兴趣。 我的代码由于某种原因不起作用。 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'等
答案 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以获取有关如何处理它的建议。