【问题标题】:Matlab: Undefined function 'eq' for input arguments of type 'cell'Matlab:“cell”类型的输入参数的未定义函数“eq”
【发布时间】:2016-10-18 03:38:13
【问题描述】:

这段代码:

if (prefixTree(1,4).prefixTree2(:,2)=='2')
    unique(prefixTree(1,4).prefixTree2(:,3))
end

返回此错误:

“cell”类型的输入参数的未定义函数“eq”。

为什么?

【问题讨论】:

  • 您可以考虑将 matlab 添加为标签,以便了解您的问题。
  • 您希望if 语句做什么? prefixTree(1,4).prefixTree2(:,2) 看起来像是一个元胞数组,但您的比较根本没有任何意义。用简单的英语,你的if 声明在做什么?后退一步。
  • 错误是专门指向你有prefixTree2(:,2)=='2'的部分Matlab不允许==进行单元格比较,'2'是否表示它是字符串类型?尝试删除“”,看看它会抛出什么错误?
  • 我希望如果 prefixTree(1,4).prefixTree2(:,2) 等于 2,代码会在 prefixTree(1,4).prefixTree2(:,3) 中找到唯一值. @GameOfThrone 我试过没有 '' 但代码给了我同样的错误。
  • 在这种情况下,我认为 horchler 得到了正确的答案,它使用了strcmp 字符串比较函数,该函数可以应用于索引单元格并将其内容与另一个字符串进行比较。

标签: string matlab prefix cell-array


【解决方案1】:

错误暗示prefixTree(1,4).prefixTree2(:,2) 是一个元胞数组。您可以使用prefixTree(1,4).prefixTree2{:,2} 访问第二列的各个元素。此外,冒号运算符暗示prefixTree(1,4).prefixTree2(:,2) 中有多个元素,但您正在尝试进行标量比较。最后,您将与char'2' 与数字2 相对)进行比较,因此最好使用string functions。您可以使用strcmp 检查单元格的每个元素:

prefixTree(1,4).prefixTree2 = {'1' '2';'3' '2'}; % Example data
strcmp(prefixTree(1,4).prefixTree2(:,2),'2')

然后使用anyall 为您的if 语句返回一个标量:

if all(strcmp(prefixTree(1,4).prefixTree2(:,2),'2'))
    ...
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    相关资源
    最近更新 更多