gpt4 book ai didi

matlab - 如何确定函数调用的输出是否未使用?

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:58 26 4
gpt4 key购买 nike

假设我有一个函数 foo,它可以在给定输入的情况下返回三个值:

function [a,b,c] = foo(input)

变量bc的计算需要很长时间,所以有时我可能希望忽略它们在foo中的计算。如果我想忽略这两个计算,我只需像这样调用函数:

output1 = foo(input);

然后在 foo 中包含 nargout:

if nargout == 1
% Code to calculate "a" only
else
% Code to calculate other variables

如果我想计算最后一个输出而不是第二个输出,就会出现问题。在那种情况下,我的函数调用将是:

[output1,~,output3] = foo(input);

现在,如果我在 foo 中使用 nargout 来检查函数调用中有多少输出,它将始终返回 3,因为波浪号运算符 (~) 被视为有效输出。因此,我无法使用 nargout 来确定是否计算 foo 中的第二个输出 b

还有其他方法吗?即,是否可以检查函数调用的哪些输出从函数本身内部被丢弃?

最佳答案

评论者基本上是对的;这不是用户可以完全解决的问题,除非 MathWorks 添加功能。然而,我写了一个小函数,istilde ( Wayback Machine Archive ),前一段时间试图按照您的要求进行操作。它在很多情况下都有效,但它确实有点乱七八糟,不是一个完全可靠的解决方案。例如,我没有尝试让它直接用于从命令行窗口调用的函数(这可能会通过一些工作来添加)。此外,它依赖于解析实际的 M 文件,这可能会出现问题。请参阅随附的演示文件,了解如何使用 istilde

请随意根据您的需要编辑我的代码 - 由于稳健性问题,请不要在任何生产代码中使用它。欢迎任何改进。

关于matlab - 如何确定函数调用的输出是否未使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19498911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com