由于我没有找到解决方法,所以我不得不自己找到一个解决方案。这是我想出的方法。
该工具箱有三个新的zpk类的方法。我创建了一个名为sdzpk的新类,并将其声明为内置zpk类的子类。然后,无论使用哪种新方法,我都会先将对象转换为新类,然后再将其传递给方法。
下面的代码可以ilustrate更好:
类定义文件:
classdef sdzpk < zpk & sdlti
methods (Access = public)
function obj = sdzpk(varargin)
% Constructor method. Long code here to perform data validation
% and pass information to the zpk constructor
obj = [email protected](args{:});
end
% Existing methods
% This are the old files I inherited. No need to edit them.
tsys = ctranspose(sys);
sys = delay2z(sys);
sysr = minreal(sys,tol);
F = minreals(F,tol);
FP = setpoles(F,p);
F = symmetr(F,type,tol);
F = z2zeta(F,tol);
end
end
在工具箱内的几个地点,功能minreals被调用。所有这些呼叫被替换为:
minreals(sdzpk(obj))
以这种方式,我确定使用了新类并且应用了正确的方法。
我希望这有助于某人。
这可能会有所帮助http://stackoverflow.com/questions/9781866/folder-and-folder – Alfabravo
@Alfabravo非常感谢。我之前看到了答案。它解释了我理解的包和文件夹的层次结构。但它没有阐明(因为Matlab文档都没有)如何为现有类引入新方法。我想子类化是一种选择,但我将不得不使用不同的名称,这将需要大量的重新编码。 – Rudy