【发布时间】:2018-10-22 22:33:11
【问题描述】:
我在静态方法中有一个带有持久变量的类。出于测试目的,我想清除它。 clear 的 Matlab 文档指出:
要清除特定类,请使用 clear myClass。
这个方向在How to clear a persistent variable in a MATLAB method中给出
但是,这对我不起作用。这是该问题的一个简单示例。当使用单个参数调用该方法时,该参数被假定为要存储在持久变量中的矩阵。当使用两个参数调用函数时,这些参数被假定为存储矩阵的索引引用。
class def 文件,exampleClass2.m,位于目录 @exampleClass2
classdef exampleClass2
methods (Static=true)
out = foo(varargin)
end
end
foo.m,位于目录@exampleClass2
function out = foo(varargin)
persistent persistMat;
switch nargin
case 1
assert (ndims(varargin{1}) == 2)
persistMat = varargin{1};
case 2
out = persistMat(varargin{1},varargin{2});
end
end
和一个测试脚本
exampleClass2.foo(magic(5));
exampleClass2.foo(2,3)
ans = 7
clear exampleClass2
exampleClass2.foo(2,3)
ans = 7
清除这个持久变量应该怎么做,为什么清除类也不清除持久变量?
【问题讨论】:
-
您的问题的简单答案是
exampleClass2.foo([])。 :)
标签: matlab