我想比较两个向量,但问题是我从结构中提取的向量之一是一个单元格。
示例:
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
或如何解决问题。
答案 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)
如果你想比较整个矢量。