Glo*_*ria 1 arrays matlab cells
我有2个单元格函数(由某些代码产生)如下:
p =
'GO:0008150'
'GO:0016740'
'GO:0016787'
'GO:0008150'
'GO:0016740'
'GO:0016740'
'GO:0016787'
'GO:0016787'
'GO:0016787'
'GO:0006810'
'GO:0006412'
'GO:0004672'
'GO:0008150'
'GO:0008150'
'GO:0006810'
'GO:0016192'
'GO:0006810'
'GO:0005215'
c =
'GO:0016740'
'GO:0016787'
'GO:0006810'
'GO:0006412'
'GO:0004672'
'GO:0016779'
'GO:0004386'
'GO:0003774'
'GO:0016298'
'GO:0016192'
'GO:0005215'
'GO:0030533'
'GO:0016787'
'GO:0006810'
'GO:0006412'
'GO:0003774'
'GO:0005215'
'GO:0030533'
Run Code Online (Sandbox Code Playgroud)
我有一个代码,它可以正常使用单个值(数字或字符),但它不适用于上面的单元格,并出现以下错误消息:
??? Undefined function or method 'eq' for input arguments of type 'cell'.
如果有任何想法如何从单元格函数转换为任何类型,可以接受以下代码:
level1_root=setdiff(p,c) % to find the cells from p not in c
for i=1:length(p)
a=[p(i),c(i)];
if a(1,:)==level1_root
level=a(2);
level=[level a(2)]
else
end
end
Run Code Online (Sandbox Code Playgroud)
在您的代码中,a是一个包含两个字符串level1_root的单元格数组,而是一个包含一个字符串的单元格数组.您无法使用比较字符串的单元格数组==.你应该宁愿一个strcmp.例如,像这样:
level1_root=setdiff(p,c) % to find the cells from p not in c
for i=1:length(p)
a=[p(i),c(i)];
if strcmp(a{1}, level1_root{:})
level=a(2);
level=[level a(2)]
else
end
end
Run Code Online (Sandbox Code Playgroud)
但是,我不确定上述代码是否适合您.它假设level1_root只有1个元素.这是示例数组中的情况,但可能不是一般的.您必须更改代码以满足您的需求.