Main Content

샘플-앤-홀드 시스템 시뮬레이션하기

이 예제는 신호를 업샘플링 및 필터링하여 샘플-앤-홀드 시스템의 출력을 시뮬레이션하는 여러 가지 방법을 보여줍니다.

정현파 신호를 생성합니다. 16개 샘플이 정확히 하나의 신호 주기와 일치하도록 샘플 레이트를 지정합니다. 신호의 줄기 플롯을 그립니다. 샘플-앤-홀드 수행 결과를 시각화를 위해 계단 그래프를 겹칩니다.

fs = 16;
t = 0:1/fs:1-1/fs;

x = .9*sin(2*pi*t);

stem(t,x)
hold on
stairs(t,x)
hold off

Figure contains an axes object. The axes object contains 2 objects of type stem, stair.

인자 4로 신호를 업샘플링합니다. 원래 신호와 함께 결과를 플로팅합니다. upsample은 기존 샘플 사이에 0을 추가하여 신호의 샘플 레이트를 증가시킵니다.

ups = 4;

fu = fs*ups;
tu = 0:1/fu:1-1/fu;

y = upsample(x,ups);

stem(tu,y,'--x')

hold on
stairs(t,x)
hold off

Figure contains an axes object. The axes object contains 2 objects of type stem, stair.

이동평균 FIR 필터로 필터링하여 0을 샘플-앤-홀드 값으로 채웁니다.

h = ones(ups,1);

z = filter(h,1,y);

stem(tu,z,'--.')
hold on
stairs(t,x)
hold off

Figure contains an axes object. The axes object contains 2 objects of type stem, stair.

최근접이웃 보간을 지정하여 MATLAB® 함수 interp1을 사용하여 동일한 동작을 얻을 수 있습니다. 이 경우, 시퀀스를 정렬하기 위해 원점을 이동해야 합니다.

zi = interp1(t,x,tu,'nearest');

dl = floor(ups/2);

stem(tu(1+dl:end),zi(1:end-dl),'--.')
hold on
stairs(t,x)
hold off

Figure contains an axes object. The axes object contains 2 objects of type stem, stair.

함수 resample은 마지막 입력 인수를 0으로 설정하면 동일한 결과를 생성합니다.

q = resample(x,ups,1,0);

stem(tu(1+dl:end),q(1:end-dl),'--.')
hold on
stairs(t,x)
hold off

Figure contains an axes object. The axes object contains 2 objects of type stem, stair.

참고 항목

|