Main Content

해석적 신호와 힐베르트 변환

hilbert 함수는 유한한 데이터 블록에 대해 정확한 해석적 신호를 구합니다. 또한 유한 임펄스 응답(FIR) 힐베르트 변환기 필터를 사용하여 허수부에 대한 근삿값을 계산하는 방법으로 해석적 신호를 생성할 수도 있습니다.

주파수가 203Hz, 721Hz, 1001Hz인 3개의 정현파로 구성된 시퀀스를 생성합니다. 이 시퀀스는 약 1초 동안 10kHz로 샘플링됩니다. hilbert 함수를 사용하여 해석적 신호를 계산합니다. 0.01초와 0.03초 사이의 해석적 신호를 플로팅합니다.

fs = 1e4;
t = 0:1/fs:1; 

x = 2.5 + cos(2*pi*203*t) + sin(2*pi*721*t) + cos(2*pi*1001*t);

y = hilbert(x);

plot(t,real(y),t,imag(y))
xlim([0.01 0.03])
legend('real','imaginary')
title('hilbert Function')
xlabel('Time (s)')

Figure contains an axes object. The axes object with title hilbert Function, xlabel Time (s) contains 2 objects of type line. These objects represent real, imaginary.

원래 시퀀스와 해석적 신호의 파워 스펙트럼 밀도에 대한 Welch 추정값을 계산합니다. 시퀀스를 길이가 256이며 해밍 윈도우가 적용된 겹치지 않는 조각으로 나눕니다. 음수 주파수에서는 해석적 신호가 전력을 가지지 않는 것을 확인합니다.

pwelch([x;y].',256,0,[],fs,'centered')
legend('Original','hilbert')

Figure contains an axes object. The axes object with title Power Spectral Density, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 2 objects of type line. These objects represent Original, hilbert.

designfilt 함수를 사용하여 60차 힐베르트 변환기 FIR 필터를 설계합니다. 천이 폭을 400Hz로 지정합니다. 필터의 주파수 응답을 시각화합니다.

fo = 60;

d = designfilt('hilbertfir','FilterOrder',fo, ...
       'TransitionWidth',400,'SampleRate',fs); 

freqz(d,1024,fs)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (kHz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (kHz), ylabel Magnitude (dB) contains an object of type line.

정현파 시퀀스에 필터를 적용하여 해석적 신호의 허수부에 대한 근삿값을 구합니다.

hb = filter(d,x);

필터의 군지연 grd는 필터 차수의 절반과 동일합니다. 이 지연을 보정합니다. 허수부의 처음 grd개 샘플과 실수부와 시간 벡터의 마지막 grd개 샘플을 제거합니다. 0.01초와 0.03초 사이의 결과를 플로팅합니다.

grd = fo/2;
   
y2 = x(1:end-grd) + 1j*hb(grd+1:end);
t2 = t(1:end-grd);

plot(t2,real(y2),t2,imag(y2))
xlim([0.01 0.03])
legend('real','imaginary')
title('FIR Filter')
xlabel('Time (s)')

Figure contains an axes object. The axes object with title FIR Filter, xlabel Time (s) contains 2 objects of type line. These objects represent real, imaginary.

해석적 신호 근삿값의 파워 스펙트럼 밀도(PSD)를 추정하고 이를 hilbert 결과와 비교합니다.

pwelch([y;[y2 zeros(1,grd)]].',256,0,[],fs,'centered')
legend('hilbert','FIR Filter')

Figure contains an axes object. The axes object with title Power Spectral Density, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 2 objects of type line. These objects represent hilbert, FIR Filter.

참고 항목

|