Однократная настройка задач для системных объектов
В этом примере показан способ вызова setup на объекте System. В большинстве случаев нет необходимости звонить setup непосредственно потому, что setup инициализация выполняется при первом запуске объекта System. Звонить setup перед запуском, только если есть опасения относительно времени выполнения инициализации.
Создание системного объекта Counter с начальным значением 5. (См. полное определение Counter в разделе ниже.)
count = Counter('StartValue',5)count =
Counter with properties:
UseIncrement: 1
UseWrapValue: 1
StartValue: 5
Increment: 1
WrapValue: 10
В определении Counter объект, setupImpl инициализирует StartValue с указанным номером, с которого следует начать подсчет. При звонке setup, вызов объекта System setupImpl а также проверяет входные значения и значения свойств. Поскольку Counter определил эти внутренние методы проверки, вы должны дать setup входное значение для проверки.
Инициализируйте StartValue для вашего count объект путем вызова setup со значением ввода местозаполнителя. После инициализации запустите объект.
setup(count,0) count(2)
ans = 7
Полное определение Counter Системный объект
type Counter.mclassdef Counter < matlab.System
% COUNTER Compute an output value by incrementing the input value
% All properties occur inside a properties declaration.
% These properties have public access (the default)
properties
UseIncrement (1,1) logical = true % Use custom increment value.
UseWrapValue (1,1) logical = true % Use max value.
StartValue (1,1) {mustBeInteger,mustBePositive} = 1 % Value to start from.
Increment (1,1) {mustBeInteger,mustBePositive} = 1 % What to add to Value every step.
WrapValue (1,1) {mustBeInteger,mustBePositive} = 10 % Max value to wrap around.
end
properties(Access = protected)
Value
end
methods
% Constructor - Support name-value pair arguments when constructing object
function obj = Counter(varargin)
setProperties(obj,nargin,varargin{:})
end
function set.Increment(obj,val)
if val >= 10
error('The increment value must be less than 10');
end
obj.Increment = val;
end
end
methods (Access = protected)
% Validate the object properties
function validatePropertiesImpl(obj)
if obj.UseIncrement && obj.UseWrapValue && ...
(obj.WrapValue < obj.Increment)
error('Wrap value must be greater than increment value');
end
end
% Validate the inputs to the object
function validateInputsImpl(~,x)
if ~isnumeric(x)
error('Input must be numeric');
end
end
% Perform one-time calculations, such as computing constants
function setupImpl(obj)
obj.Value = obj.StartValue;
end
% Step
function out = stepImpl(obj,in)
if obj.UseIncrement
% If using increment property, multiple the increment by the input.
obj.Value = in*obj.Increment + obj.Value;
else
% If not using increment property, add the input.
obj.Value = in + obj.Value;
end
if obj.UseWrapValue && obj.Value > obj.WrapValue
% If UseWrapValue is true, wrap the value
% if it is greater than the WrapValue.
obj.Value = mod(obj.Value,obj.WrapValue);
end
out = obj.Value;
end
end
end
Сокращение задержек из-за буфера устройства ввода (панель инструментов аудио)
Передача байтов с использованием UDP (панель инструментов системы DSP)
Для большинства системных объектов нет необходимости вызывать setup. При первом вызове объекта System setup вызывается. (См. раздел Сводка последовательности вызовов.) Вы должны позвонить setup отдельно, только если нужно уменьшить вычислительную нагрузку инициализации.