Main Content

복합 System object 만들기

이 예제에서는 다른 System object들로 구성된 System object™를 만드는 방법을 보여줍니다. 이 System object는 두 개의 이동평균 System object를 사용하여 독립적인 두 샘플의 상호상관을 찾습니다. 이동평균 System object 만들기 예제에서는 System object를 만드는 방법을 자세히 설명합니다. 이 예제는 다른 System object 내에서 System object를 사용하는 방법에 대해 중점적으로 다룹니다.

프라이빗 속성으로 System object 사용하기

두 개 이상의 System object 인스턴스를 만들고 각 인스턴스가 고유의 상태를 관리하도록 하는 기능은 함수보다 System object를 사용하는 가장 큰 이점 중 하나입니다. 프라이빗 속성 MovingAverageFilter1MovingAverageFilter2는 두 개의 이동평균 필터 객체를 저장하는 데 사용됩니다.

properties (Access=private)
    % This example class contains two moving average filters (more can be added
    % in the same way)
    MovingAverageFilter1
    MovingAverageFilter2
end

이동평균 필터 설정하기

setupImpl 메서드에서 두 개의 이동평균 System object를 만들고 퍼블릭 속성을 초기화합니다.

function setupImpl(obj,~)
    % Set up moving average objects with default values
    obj.MovingAverageFilter1 = movingAverageFilter('WindowLength',obj.WindowLength1);
    obj.MovingAverageFilter2 = movingAverageFilter('WindowLength',obj.WindowLength2);
end

종속 속성 사용하기

movingAverageFilter System object에서 WindowLength 퍼블릭 속성은 이 예제에서 종속 속성으로 구현됩니다.

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.