clearing a persistent variable makes it no longer persistent
조회 수: 15 (최근 30일)
이전 댓글 표시
This is something that keeps catching me out. I do not think it is explicitly documented anywhere, though it could be implied in the matlab instructions to clear persistent variables by clearing the function.
If you clear a persistent variable using clear variablename from within the function, it ceases to be persistent.
Something like this would be handy to have as there are situations where I want to clear some, but not all persistent variables in a function. Clear allows you to do it all in one line. The alternative is to set them all to [], which is a bit more verbose.
댓글 수: 1
Abhishek Kumar Singh
2024년 5월 22일
Hi @CM, I think it is mentioned in documentation of persistent that clearing the function that declares the variable clears the persistent variable. You can refer to the Tips section of this page: https://www.mathworks.com/help/matlab/ref/persistent.html#:~:text=To%20clear%20a%20persistent%20variable%2C%20use%20clear%20with%20the%20name%20of%20the%20function%20that%20declares%20the%20variable.%20For%20example%2C%20clear%20myFun
When the clear command is used within a function to clear a variable, it removes the variable from the workspace entirely. This means that not only does it cease to be persistent, but it also gets cleared from memory.:
function foo()
persistent counter;
counter = 43;
% Display
disp(['Counter value: ' num2str(counter)]);
disp("Before clearing counter..")
disp(whos('counter'))
% Clear the persistent variable (ceases to be exists)
clear counter;
disp("After clearing counter..");
disp(whos('counter'));
end
foo()
Is there any additional information you're seeking?
채택된 답변
추가 답변 (1개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Debugging and Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!