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