0

可能重复:
如何将数组与 matlab 进行比较

这是我正在寻找的示例:

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

这将给出:

a =
    a

b=
    0

c =
    10

d =
    []   

我有:

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

我怎么能在[a,b,c,d]和预期之间进行比较?当我调用 onlygetVal(x)时,它只给我第一个值,当我写时:

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

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

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

但它不起作用,知道如何解决我的问题吗?

4

1 回答 1

0

不要试图将a, b, c,d放入矩阵中。那会附加空格。相反,使用单元格数组,就像你有 for 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}
于 2012-05-10T13:36:09.557 回答