在 MATLAB 中使用匿名函数跳过输出
假设我想从返回两个输出的 m 文件函数创建一个匿名函数。是否可以设置匿名函数,使其仅返回 m 文件函数的第二个输出?
示例:ttest2
返回两个输出:t/f 和概率。如果我想使用 cellfun
进行 t 检验,我可能只对收集概率感兴趣,即我想写这样的东西
probabilities = cellfun(@(u,v)ttest2(u,v)%take only second output%,cellArray1,cellArray2)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不可能知道 匿名函数 让它选择从具有多个可能输出参数的函数返回哪个输出。但是,当您评估匿名函数时,您可以返回多个输出。以下是使用函数 MAX 的示例:
此外,处理上面给出的具体示例的最佳方法是实际上仅使用 函数句柄
@ttest2
作为CELLFUN,然后从 CELLFUN 本身:在较新版本的 MATLAB 上,您可以将变量
junk
替换为~
忽略第一个输出参数。There's no way I know of within the expression of the anonymous function to have it select which output to return from a function with multiple possible output arguments. However, you can return multiple outputs when you evaluate the anonymous function. Here's an example using the function MAX:
Also, the best way to handle the specific example you give above is to actually just use the function handle
@ttest2
as the input to CELLFUN, then get the multiple outputs from CELLFUN itself:On newer versions of MATLAB, you can replace the variable
junk
with~
to ignore the first output argument.一种方法是定义函数:
然后
getOutput(@ttest2,2,u,v)
仅给出p 值
。要在 cellfun 中使用它,您需要运行:
这消除了每次都编写包装器的需要,但您必须确保该函数始终位于路径中。
One way to do this is to define the function:
and then
getOutput(@ttest2,2,u,v)
gives only thep-value
.To use it in a
cellfun
you would need to run:This eliminates the need to write a wrapper every time, but then you have to make sure this function is always in the path.