Вызовите мемоизованную функцию и результаты кэша
MemoizedFunction
объект обеспечивает memoization семантику указателя на функцию и кэш результатов вызова функции. Это имеет тот же синтаксис вызова как указатель на функцию, заданный в Function
свойство. Однако MemoizedFunction
объект не является указателем на функцию.
В первый раз вы вызываете мемоизованную функцию с определенным набором входных значений, MATLAB® выполняет функцию, заданную Function
свойство и кэши результаты. В более поздних вызовах мемоизованной функции с тем же набором входных параметров MATLAB возвращает кэшируемые результаты вместо того, чтобы выполнить функцию снова.
MemoizedFunction
объект обеспечивает кэш входных параметров и соответствующих выходных параметров. Когда это вызывается, MATLAB возвращает связанные кэшируемые выходные значения, если следующие условия верны.
Входные параметры численно равны кэшируемым входным параметрам. При сравнении входных значений MATLAB обрабатывает NaN
s как равный.
Количество требуемых выходных аргументов совпадает с количеством кэшируемых выходных параметров, сопоставленных с входными параметрами.
Внимание
MemoizedFunction
объект не знает об обновлениях базовой функции. Если вы изменяете функцию, сопоставленную с мемоизованной функцией, очистите кэш с clearCache
объектная функция.
Создать MemoizedFunction
объект, вызовите memoize
функция.
memoization функции сопоставлен с функцией ввода а не с MemoizedFunction
объект. Поэтому помните о следующем.
Построение нового MemoizedFunction
объект к той же функции создает другую ссылку на те же данные. Две переменные, что memoize та же функция совместно используют кэш и значения свойства объекта, такие как размер кэша. В следующем примере, переменных a
и b
совместно используйте кэш и имейте то же значение для размера кэша.
a = memoize(@svd); b = memoize(@svd);
b
(b.clearCache
) также очищает кэш для a
, и любые другие переменные это memoize svd
функция. clearCache
MemoizedFunction
объектная функция.Присвоение MemoizedFunction
объект к новой переменной создает другую ссылку на те же данные. В следующем примере, переменных c
и d
осуществлять обмен данными.
c = memoize(@svd); d = c;
Очищение переменной не очищает кэш, сопоставленный с функцией ввода. Очистить кэш для MemoizedFunction
возразите, что больше не существует в рабочей области, создайте новый MemoizedFunction
возразите против той же функции и используйте clearCache
функция на новом объекте. В качестве альтернативы можно очистить кэши для всего MemoizedFunction
объекты с помощью clearAllMemoizedCaches
функция.
clearCache | Очистите кэш для MemoizedFunction объект |
stats | Возвратите кэшируемые значения и статистику для MemoizedFunction объект |