В этом примере показано, как создать системную object™, состоящую из других системных объектов. Этот системный объект использует два системных объектов скользящего среднего, чтобы найти перекрестную корреляцию двух независимых выборок. Пример объекта Create Moving Average 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
The WindowLength
общественная собственность из Filter
movingAverage Системный объект реализован как зависимое свойство в этом примере.
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