文档

MemoizedFunction

调用memoize的函数和缓存的结果

描述

一个MemoizedFunction对象保持记忆的语义处理函数和函数调用的一个缓存的结果。它有相同的调用语法功能处理中指定函数财产。然而,MemoizedFunction对象不是一个函数处理。

你第一次调用memoize的函数与一个特定的输入值,MATLAB®执行指定的函数函数财产和缓存结果。在以后调用memoize的函数相同的输入,MATLAB返回缓存的结果,而不是执行函数。

MemoizedFunction对象维护缓存输入和相应的输出。当它被调用时,MATLAB返回相关的缓存输出值如果下列条件是正确的。

  1. 输入参数的数值等于缓存输入。当比较输入值,MATLAB处理年代,是平等的。

  2. 要求输出参数的数量匹配缓存输出与输入的数量。

    警告:一个MemoizedFunction对象不知道更新底层函数。如果你修改功能与memoize的相关功能,清除缓存的clearCache对象的功能。

创建对象

创建一个MemoizedFunction对象,调用memoize的函数。

记忆的函数与输入函数和不相关MemoizedFunction对象。因此,记住以下。

  • 建设一个新MemoizedFunction对象相同的函数创建另一个引用相同的数据。两个变量,memoize的相同的功能共享缓存和对象属性值,例如缓存大小。在以下示例中,变量一个b共享缓存,缓存大小相同的值。

    一个= memoize (@svd);b = memoize (@svd);
    同样,清除缓存b(b.clearCache)也清空缓存一个和任何其他变量memoize的圣言会函数。clearCache是一个MemoizedFunction对象的功能。

  • 分配一个MemoizedFunction对象到一个新的变量创建另一个引用相同的数据。在以下示例中,变量cd共享数据。

    c = memoize (@svd);d = c;

  • 清除一个变量不清楚缓存与输入函数相关联。为一个清除缓存MemoizedFunction对象不再存在于工作区,创建一个新的MemoizedFunction对象相同的功能和使用clearCache新对象的函数。或者,您可以清除缓存MemoizedFunction对象的使用clearAllMemoizedCaches函数。

属性

全部展开

MemoizedFunction属性控制memoize的行为功能。您可以访问或修改的属性memoize的函数。使用点符号来引用一个特定的对象和属性:

m = memoize (@ones);m。CacheSize = 25;

记忆具有的功能语义应用,作为一个函数返回句柄。这个属性是只读的。

数据类型:function_handle

最大数量的缓存输入和输出组合,指定为一个正整数。

例子:

数据类型:

缓存状态,指定为真正的。指导MATLAB调用指定的函数函数财产无论结果缓存,而不是缓存结果,设置该属性

数据类型:逻辑

对象的功能

clearCache 清楚缓存MemoizedFunction对象
统计数据 为MemoizedFunction对象返回缓存的值和统计

例子

全部展开

创建一个MemoizedFunction对象通过memozingdatetime函数。

mf = memoize (@datetime)
mf = MemoizedFunction属性:功能:@datetime启用:1 CacheSize: 10

改变maxinum缓存输入和输出组合的数量。

曼氏金融。CacheSize = 2
mf = MemoizedFunction属性:功能:@datetime启用:1 CacheSize: 2

用三种不同的输入值调用memoize的函数。

一个= mf (“今天”);b = mf (“昨天”);c = mf (“明天”);

调用统计数据函数来调查缓存的结果。

s =统计(mf);s.Cache.Inputs {:}
ans =细胞“昨天”
ans =细胞“明天”

调用memoize的函数的结果“今天”不缓存,因为CacheSize是2。

在你当前的工作目录中,创建以下文件memoizeSquareExample.m包含一个函数来计算一个数的平方。当函数被调用时,如果MATLAB返回缓存的结果,味精不显示。

类型memoizeSquareExample.m
函数的m = memoizeSquareExample (n) m = n ^ 2;味精= "”的平方+字符串(n) +”是“+字符串(m) +“。”;disp(味精)

Memoize的函数。默认情况下,记忆是启用。

mf = memoize (@memoizeSquareExample);

调用memoize的函数使用相同的输入值的两倍。味精只显示一次,因为第二个函数调用返回缓存的结果。

一个= mf (42);
42岁的平方是1764。
b = mf (42);

禁用记忆和重复输入值调用memoize的函数。虽然结果42的输入缓存,味精显示,因为记忆是禁用的。

曼氏金融。启用= false;c = mf (42);
42岁的平方是1764。

调用memoize的函数与一组不同的输入。

d = mf (13);
13的平方是169。

调用统计数据函数来调查缓存的结果。MATLAB不返回缓存的结果,而记忆是残疾人或收集统计信息,它继续存储输入和输出值。

s = mf.stats ();s.Cache.Inputs {:}
ans =细胞[42]

介绍了R2017a

这个主题有帮助吗?