exponenta event banner

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

В этом примере показано, как создать системный 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

Использование объекта взаимной корреляции в 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. The axes contains an object of type stem.