Вызовите мемоизованную функцию и результаты кэша
Объект 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 |