【发布时间】:2013-11-19 23:16:21
【问题描述】:
我正在尝试创建一个函数,该函数存储一个非常大的变量以供每次调用该函数时使用。我有一个函数myfun(x,y),其中y 非常大,因此执行速度很慢,因为 MATLAB 是按值传递的。但是,我只在程序执行期间传递变量y 一次,创建一个闭包,然后将其传递给另一个函数以重复调用:
Y = create_big_matrix();
newfun = @(x) myfun(x,Y);
some_other_fun(newfun); % This calls newfun several times
我假设每次调用newfun 时,都会将Y 的存储值复制到myfun。这似乎非常低效。有没有更好的方法来实现newfun,这样Y 只被复制一次,当newfun 被创建时(或者当它被传递给some_other_fun 时)?
【问题讨论】:
-
除了COW,您可以将数据包装在句柄类对象(具有引用语义)中。
标签: matlab memory-management closures