복합 System object 만들기
이 예제에서는 다른 System object들로 구성된 System object™를 만드는 방법을 보여줍니다. 이 System object는 두 개의 이동평균 System object를 사용하여 독립적인 두 샘플의 상호상관을 찾습니다. 이동평균 System object 만들기 예제에서는 System object를 만드는 방법을 자세히 설명합니다. 이 예제는 다른 System object 내에서 System object를 사용하는 방법에 대해 중점적으로 다룹니다.
프라이빗 속성으로 System object 사용하기
두 개 이상의 System object 인스턴스를 만들고 각 인스턴스가 고유의 상태를 관리하도록 하는 기능은 함수보다 System 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
메서드에서 두 개의 이동평균 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