如何在调用MATLAB arrayfun时捕获多个返回值?

时间:2012-05-28 19:13:28

标签: arrays matlab return-value

我有一个函数,它将图像作为参数,并生成标签和分数。我偶尔想要快速测试一个(单元格)图像数组,而我所知道的最方便的方法是使用arrayfun。这适用于获取我的函数生成的标签,但我真的希望输出是[label score]单元格的列表。

我可以在我的函数周围编写一个包装器,它捕获两个值并将它们作为单元格矩阵返回,然后在arrayfun中调用该包装器,但似乎这是一个常见的习惯用法,应该有一个更方便地使用多个返回值的方法。在那儿? (也许已经存在可以做到这一点的标准便利功能?类似于deal的反面...)

1 个答案:

答案 0 :(得分:9)

您可以使用内置语法将输出作为两个矩阵:

  [A, B, ...] = arrayfun(fun, S, ...);

例如:

function [y,z]=foo(x)
     y= x*x;
     z = x + 10;
end

然后运行函数:

[A,B] = arrayfun( @foo, magic(5))