샘플-앤-홀드 시스템 시뮬레이션하기
이 예제는 신호를 업샘플링 및 필터링하여 샘플-앤-홀드 시스템의 출력을 시뮬레이션하는 여러 가지 방법을 보여줍니다.
정현파 신호를 생성합니다. 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
인자 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
이동평균 FIR 필터로 필터링하여 0을 샘플-앤-홀드 값으로 채웁니다.
h = ones(ups,1); z = filter(h,1,y); stem(tu,z,'--.') hold on stairs(t,x) hold off
최근접이웃 보간을 지정하여 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
함수 resample
은 마지막 입력 인수를 0으로 설정하면 동일한 결과를 생성합니다.
q = resample(x,ups,1,0); stem(tu(1+dl:end),q(1:end-dl),'--.') hold on stairs(t,x) hold off