Resetting a memoized function
이전 댓글 표시
I know that clearCache will clear the cache of a MemoizedFunction, but how would you reset its other properties to their defaults? I would have thought that rebuilding it with memoize() would do so, but the test below shows that that does not work.
mf=memoize(@localFcn) %default property values
mf.CacheSize=3; mf.Enabled=false %make some non-default property settings
clear mf
mf=memoize(@localFcn) %clear and rebuild -- but property values do not reset!!!!
function y=localFcn(x)
y=x.^2;
end
답변 (2개)
Walter Roberson
2026년 2월 25일 1:25
0 개 추천
According to +matlab/+lang/MemoizedFunction.m
% 2. MemoizedFunction objects are persistent to a session of MATLAB.
% For Example:
% f = memoize(@plus);
% f.Enabled = 0; % By default, Enabled == true
% clear f; % Only clears the object f.
% h = memoize(@plus);
% isequal( h.Enabled, false ); % State that was set by 'f'
So this is by design.
One way to have the behavior you're talking about is to wrap the function in an anonymous function --
mf=memoize(@(x)localFcn(x)) %default property values
mf.CacheSize=3; mf.Enabled=false %make some non-default property settings
Now, when you rebuild the original anonymous function dies so the memoization starts fresh --
clear mf
mf=memoize(@(x)localFcn(x)) %clear and rebuild
function y=localFcn(x)
y=x.^2;
end
댓글 수: 1
But you can't do it this way because a reference fh to the function handle lingers in the workspace throughout --
fh=@(x)localFcn(x);
mf=memoize(fh) %default property values
mf.CacheSize=3; mf.Enabled=false %make some non-default property settings
clear mf
mf=memoize(fh)
function y=localFcn(x)
y=x.^2;
end
카테고리
도움말 센터 및 File Exchange에서 Performance and Memory에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!