Matlab 函数的请求输出参数

Matlab 函数的请求输出参数,matlab,function,optimization,output,Matlab,Function,Optimization,Output,假设我有 function [a, b] = foo a = 1; b = 2; 用户正在呼叫 [~, B] = foo; 我只希望发生b=2,以防止耗时的操作a=1。有没有办法找出用户实际上没有请求a 很久以前。我想知道Mathworks是否改进了这一点,或者是否有人在这期间找到了解决办法 注意:相反的情况是可能的:如果用户调用A=foo,则nargout为1。这是不可能的。仅仅因为在函数的返回点不需要中间输出,并不意味着它的计算在函数中是不必要的,除非您显式地编写函数来这样做 例如,输出

假设我有

function [a, b] = foo
a = 1;
b = 2;
用户正在呼叫

[~, B] = foo;
我只希望发生
b=2
,以防止耗时的操作
a=1
。有没有办法找出用户实际上没有请求
a

很久以前。我想知道Mathworks是否改进了这一点,或者是否有人在这期间找到了解决办法


注意:相反的情况是可能的:如果用户调用
A=foo
,则
nargout
为1。

这是不可能的。仅仅因为在函数的返回点不需要中间输出,并不意味着它的计算在函数中是不必要的,除非您显式地编写函数来这样做

例如,输出3的计算可能取决于函数内部的输出2,即使在输出时没有明确请求)。Matlab无法知道这一点,因此它不能假设任何和所有涉及该输出的计算都可以被丢弃

如果您需要一种内存有效的方式来确保只进行正确的计算,那么请更改您的输出策略


我建议返回一个包含正确字段的结构,在这里您可以在函数调用时请求所需的字段。这样,您的最终结构将只包含所需的字段,并且您可以在函数内部确保不会进行不必要的计算。

ah,2015年不是很久以前:)嗨,texnic,请就原始问题提出悬赏,要求更新/现代参考,即使有可能,操作a=1也将以相同的方式执行