首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在matlab中实现单元格数组的转换

如何在matlab中实现单元格数组的转换
EN

Stack Overflow用户
提问于 2012-10-27 20:47:55
回答 1查看 127关注 0票数 0

我有两个单元函数(由某些代码产生)如下:

代码语言:javascript
复制
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'

我有一个代码,它可以很好地处理单个值(数字或字符),但是它不适用于上面的细胞射线,并出现以下错误消息:

??? Undefined function or method 'eq' for input arguments of type 'cell'.

如果对如何将单元格函数转换为可以接受以下代码的任何类型有任何想法的话:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2012-10-27 21:26:56

在您的代码中,a是一个由两个字符串组成的单元数组,而level1_root是一个带有一个字符串的单元格数组。不能使用==比较字符串的单元格数组。你应该选择一个strcmp。例如,如下所示:

代码语言:javascript
复制
  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

但是,我不确定上述代码是否适用于您。它假设level1_root只有一个元素。这种情况在示例数组中是这样的,但在一般情况下可能不是这样。您将不得不更改代码以满足您的需要。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13104052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档