Matlab中不同类型数组的比较

时间:2012-05-10 13:25:42

标签: matlab

  

可能重复:
  how to compare array with matlab

以下是我正在寻找的一个例子:

[a,b,c,d] = getVal(x);

这将给出:

a =
    a

b=
    0

c =
    10

d =
    []   

我有:

expected = {'a','0','10',[]};

我如何在[a,b,c,d]和预期之间进行比较? 当我只调用getVal(x)时,它只给我第一个值,当我写的时候:

[a,b,c,d] = getVal(x)

然后我在日志中获得了所有值。当我打电话时,为什么不是这种情况 getVal(x)? 为了比较,我尝试了:

isequal([a,b,c,d], expected {1:end})

但它不起作用,任何想法如何解决我的问题?

1 个答案:

答案 0 :(得分:0)

请勿尝试将abcd放入矩阵中。这会增加空间。相反,使用单元格数组,就像使用expected

一样
>> a='a'; b='0'; c='10'; d=[];
>> expected = {'a','0','10',[]};
>> isequaln({a,b,c,d}, expected)

ans =

     1

您还问过为什么简单地调用getVal(x)并不会提供所有值。这是因为在MATLAB中,函数可以(并且经常)对输出参数的数量作出反应,即,赋值左侧的变量数。如果使用四个输出参数调用,则getVal函数将返回四个值;如果它没有做任何特殊操作,那么使用零或一个输出参数调用它将仅返回这些值中的第一个,在您的示例中为'a'。如果您想要一个包含所有这四个值的单元格数组,请执行类似

的操作
[a, b, c, d] = getVal(x)
{a, b, c, d}