以下是我正在寻找的一个例子:
[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})
但它不起作用,任何想法如何解决我的问题?
答案 0 :(得分:0)
请勿尝试将a
,b
,c
,d
放入矩阵中。这会增加空间。相反,使用单元格数组,就像使用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}