“cell”类型的输入参数的未定义函数或方法“eq”

时间:2015-06-24 13:40:25

标签: matlab

我想比较两个向量,但问题是我从结构中提取的向量之一是一个单元格。

示例:

IN1 :[0] [0] [0] [1][0] [1] [0] [0] [1] [1] [0] 
IN2 :[0 0 0 1 0 1 0 0 1 1 0] 

如果我使用

if IN1==IN2 disp('equal'); end

出现类型为cell的输入参数的未定义'eq'的错误, 如果我将==替换为isequal(IN1,IN2),则不会给我确切的结果。

我不知道如何将IN1的类型转换为IN2或如何解决问题。

2 个答案:

答案 0 :(得分:2)

您需要将IN1转换为IN2等数字向量。为此,请使用[IN1{:}]mat2cell(IN1)然后你可以比较。所以,使用

[IN1{:}]==IN2

cell2mat(IN1)==IN2.

==的这种使用假定双方都有相同的大小,或者其中一个是标量。结果是一个相同大小的向量,包含1的元素,对于不同的元素,它们等于0

另一种可能性是

isequal([IN1{:}], IN2)

isequal(cell2mat(IN1), IN2)

如果双方的大小相同且所有元素相同,则会给出一个1,否则为0

答案 1 :(得分:1)

三个选项:

  • [IN1{:}] == IN2
  • cell2mat(IN1) == IN2
  • all([IN1{:}] == IN2)如果你想比较整个矢量。