Конструктор вашего класса переписного получив вызов со значением, которое вы передаете EPSILON. Кроме того, хотя это не требуется в вашем примере кода, я бы, вероятно, разделил определение перечисления от других классов, так как только экземпляры классов перечисления, которые могут быть созданы, фактически созданы в блоке перечисления. Дополнительная информация о том, как перечислены работы here. Кроме того, вместо статических методов для разных QR-алгоритмов вы можете рассмотреть возможность использования strategy pattern. Это будет выглядеть примерно так:
NamedValues.m
classdef NamedValues < double
enumeration
EPSILON (1e-6)
end
end
ClassicalStrategy.m
classdef ClassicalQRStrategy
methods
function [Q, R] = compute(strategy, A)
...
if R(c, c) < NamedValues.EPSILON
...
end
end
end
QR.m
classdef QRAlgorithm
properties
Strategy
end
methods
function algorithm = QRAlgorithm(strategy)
algorithm.Strategy = strategy;
end
function [Q, R] = compute(algorithm, A)
[Q, R] = algorithm.Strategy.compute(A);
end
end
end
Большое спасибо. – Yola