这可能是也可能不是广为人知,但作为提交的时间(R2015a),匿名函数句柄可以存储大,未使用的块的内存工作区创建。通常,使用匿名函数是暂时性的,这是从来没有感觉到的效果。然而,如果你返回一个匿名函数处理的输出函数,或将其保存到一个.mat文件,或广播工作者使用并行工具箱的PARFOR命令,你可以看到很多从这个隐藏数据的开销。为例,进一步讨论,看到这些线程
//www.tianjin-qmedu.com/matlabcentral/answers/115569-what-extra-data-is-stored-by-an-anonymous-function
//www.tianjin-qmedu.com/matlabcentral/answers/115254-parfor-behavior-sensitive-to-comments
这个提交包含AFSLIM函数,这将让你创建一个匿名函数,只存储额外的参数指定的变量。(当然,当然,您必须指定所需的所有变量)。
例子:以下代码(重要,必须作为一个函数,运行不从命令行! !)生成两个文件包含一个匿名函数具有相同功能的行为。然而,tst1。垫使用259 MB而tst2。垫仅消耗1 KB。
功能测试
b = 2;
fun1 = @ x + b (x);与参数b %匿名函数
fun2 = afslim (fun1, b);%苗条版本
b =兰德(6000);
保存tst1 fun1
保存tst2 fun2
结束
如果你有一个现有的匿名函数已经包含了大量的不必要的额外的数据,提交还包含AFCLEAN,试图带额外的数据。然而,AFCLEAN依靠一定数量的非法MATLAB和减免匿名函数,指的是嵌套的或子功能。当它工作时,它似乎工作得很好,但用在你自己的风险!
引用作为
马特·J (2023)。节约内存匿名函数(//www.tianjin-qmedu.com/matlabcentral/fileexchange/45749-memory-efficient-anonymous-functions), MATLAB中央文件交换。检索。