MATLAB中使用匿名函数跳过输出

MATLAB中使用匿名函数跳过输出,matlab,anonymous-function,Matlab,Anonymous Function,假设我想从返回两个输出的m-file-function创建一个匿名函数。是否可以将匿名函数设置为只返回m-file-function的第二个输出 示例:ttest2返回两个输出,t/f和一个概率。如果我想将t检验用于cellfun,我可能只对收集概率感兴趣,也就是说,我想写这样的东西 probabilities = cellfun(@(u,v)ttest2(u,v)%take only second output%,cellArray1,cellArray2) 据我所知,在的表达式中,无法让它

假设我想从返回两个输出的m-file-function创建一个匿名函数。是否可以将匿名函数设置为只返回m-file-function的第二个输出

示例:
ttest2
返回两个输出,t/f和一个概率。如果我想将t检验用于
cellfun
,我可能只对收集概率感兴趣,也就是说,我想写这样的东西

probabilities = cellfun(@(u,v)ttest2(u,v)%take only second output%,cellArray1,cellArray2)
据我所知,在的表达式中,无法让它从具有多个可能输出参数的函数中选择要返回的输出。但是,在计算匿名函数时,可以返回多个输出。下面是使用函数的示例:

此外,处理上面给出的特定示例的最佳方法是实际使用
@ttest2
作为输入,然后从自身获得多个输出:


在较新版本的MATLAB上,您可以将变量
junk
替换为忽略第一个输出参数。

一种方法是定义函数:

function varargout = getOutput(func,outputNo,varargin)
    varargout = cell(max(outputNo),1);
    [varargout{:}] = func(varargin{:});
    varargout = varargout(outputNo);
end
然后
getOutput(@ttest2,2,u,v)
只给出
p值

要在
cellfun
中使用它,您需要运行:

probabilities = cellfun(@(u,v)getOutput(@ttest2,2,u,v)...

这样就无需每次都编写包装器,但您必须确保此函数始终位于路径中。

换句话说,我确实需要编写包装器函数。谢谢你的澄清!另外:祝贺你在20k@乔纳斯:谢谢,恭喜你的MATLAB银牌!
function varargout = getOutput(func,outputNo,varargin)
    varargout = cell(max(outputNo),1);
    [varargout{:}] = func(varargin{:});
    varargout = varargout(outputNo);
end
probabilities = cellfun(@(u,v)getOutput(@ttest2,2,u,v)...