Создайте Составной Системный объект

В этом примере показано, как создать Систему object™ состоявший из других Системных объектов. Этот Системный объект использует два Системных объекта скользящего среднего значения, чтобы найти взаимную корреляцию двух независимых выборок. Создать пример Системного объекта Скользящего среднего значения объясняет подробно, как создать Системный объект. Этот пример фокусируется о том, как использовать Системный объект в другом Системном объекте.

Системные объекты как Частные свойства

Способность создать больше чем один экземпляр Системного объекта и имеющий каждый экземпляр справляется, его собственное состояние является одним из самых больших преимуществ использования Системных объектов по функциям. Частные свойства 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

Используйте объект взаимной корреляции в MATLAB

Создайте случайные переменные, чтобы вычислить взаимную корреляцию их скользящих средних значений, затем просмотреть результаты в диаграмме стебель-листья.

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

Figure contains an axes object. The axes object contains an object of type stem.