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也将以相同的方式执行