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