В этом примере показано, как создать системный object™, состоящий из других системных объектов. Этот объект System использует два объекта системы скользящего среднего, чтобы найти взаимную корреляцию двух независимых выборок. В примере создания объекта системы скользящего среднего подробно объясняется, как создать объект системы. В этом примере рассматривается использование объекта System в другом объекте System.
Возможность создания нескольких экземпляров объекта System и управление каждым экземпляром своим состоянием является одним из самых больших преимуществ использования объектов System по сравнению с функциями. Частные свойства MovingAverageFilter1 и MovingAverageFilter2 используются для хранения двух объектов фильтра скользящего среднего.
properties (Access=private)
% This example class contains two moving average filters (more can be added
% in the same way)
MovingAverageFilter1
MovingAverageFilter2
end
В setupImpl создайте два объекта системы скользящего среднего и инициализируйте их общие свойства.
function setupImpl(obj,~) % Set up moving average objects with default values obj.MovingAverageFilter1 = movingAverageFilter('WindowLength',obj.WindowLength1); obj.MovingAverageFilter2 = movingAverageFilter('WindowLength',obj.WindowLength2); end
WindowLength общедоступное свойство из movingAverageFilter В этом примере системный объект реализован как зависимое свойство.
properties(Nontunable,Dependent)
% WindowLength Moving window length
WindowLength1;
WindowLength2;
end
При назначении значения одному из зависимых свойств значение устанавливается в соответствующем фильтре скользящего среднего. При чтении одного из зависимых свойств значение считывается из соответствующего фильтра скользящего среднего.
function set.WindowLength1(obj,WindowLength1) % Set the window length of one moving average filter obj.MovingAverageFilter1.WindowLength = WindowLength1; end function WindowLength = get.WindowLength1(obj) % Read window length from one of the moving average filters WindowLength = obj.MovingAverageFilter1.WindowLength; end function set.WindowLength2(obj,WindowLength2) % Set the window length of one moving average filter obj.MovingAverageFilter2.WindowLength = WindowLength2; end function WindowLength = get.WindowLength2(obj) % Read window length from one of the moving average filters WindowLength = obj.MovingAverageFilter2.WindowLength; end
Создайте случайные величины, чтобы вычислить взаимную корреляцию их скользящих средних, а затем просмотрите результаты на графике основы.
x = rand(20,1); y = rand(20,1); crossCorr = crossCorrelationMovingAverages('WindowLength1',1,'WindowLength2',5); for iter = 1:100 x = rand(20,1); y = rand(20,1); [corr,lags] = crossCorr(x,y); stem(lags,corr) end
