Matlab函数处理和可变和未知数量的输出

时间:2016-11-15 15:37:34

标签: matlab arguments output anonymous-function

使用匿名功能,您可以返回任意数量的输出。我需要的是能够使用仿函数(匿名函数作为其他函数的参数),而不知道我将获得多少输出。

这是为了避免代码重复,方法是在while循环中注入函数调用,并在许多函数中重用。

示例:

function y = foo( x )  
    y = x;
end

function [y1, y2] = goo( x1, x2 )  
    y1 = x1;
    y2 = x2;
end

function [ varargout ] = yolo( functor, varargin )  
    varargout = functor(varargin{:});    
end

我希望能够致电:

y = yolo(@foo, 2)
[y1, y2] = yolo(@goo, 3, 4);

有没有办法实现这个目标? 感谢

1 个答案:

答案 0 :(得分:3)

无法获取匿名函数的输出数(内联函数的函数句柄),因为输出始终为varargout,因此nargout始终返回{{ 1}}

-1

但是,看起来你没有匿名函数,而只是函数句柄来处理在myfunc = @(x, y) x + y; nargout(myfunc) % -1 文件中定义并具有明确数量的输出参数的普通函数。在这种情况下,您可以将.mnargout索引相结合,以使用所有输出参数填充{:}

varargout