이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

hht

힐베르트-황 변환(Hilbert-Huang Transform)

설명

hs = hht(imf,fs)는 내재 모드 함수 imf와 선택 사항인 샘플링 주파수 fs로 지정된, 신호의 힐베르트 스펙트럼 hs를 반환합니다. hs는 시간에 따라 스펙트럼 성분이 변하는 혼합 신호로 구성된 신호를 분석하는 데 유용합니다. hht를 사용하여 신호에 대한 힐베르트 스펙트럼 분석을 수행함으로써 국소화된 특징을 확인할 수 있습니다.

[hs,f,t] = hht(imf,fs)hs 외에 주파수 벡터 f와 시간 벡터 t도 반환합니다.

예제

[hs,f,t,imfinsf,imfinse] = hht(___)는 신호 진단에 사용할, 내재 모드 함수의 순시 주파수 imfinsf와 순시 에너지 imfinse도 반환합니다.

[___] = hht(___,Name,Value)는 하나 이상의 Name,Value 쌍의 인수로 지정된 추가 옵션을 사용하여 힐베르트 스펙트럼 파라미터를 추정합니다.

hht(___)에 출력 인수를 지정하지 않으면 현재 Figure 창에 힐베르트 스펙트럼을 플로팅합니다. 이 구문은 위에 열거된 구문의 모든 입력 인수와 함께 사용할 수 있습니다.

예제

hht(___,freqlocation)은 주파수 축의 위치를 지정하는 선택적 freqlocation 인수를 사용하여 힐베르트 스펙트럼을 플로팅합니다. 기본적으로 주파수는 y축에 표시됩니다.

예제

모두 축소

이 예제에서는 뚜렷한 주파수 변화를 보이는 정현파로 구성된 비정상(Nonstationary) 연속 신호를 살펴보겠습니다. 비정상 연속 신호의 예에는 착암기의 진동이나 폭죽 소리가 있습니다.

비정상 신호 데이터와 샘플링 주파수 fs를 불러온 다음, 혼합된 정현파 신호를 시각화합니다.

load('sinusoidalSignalExampleData.mat','X','fs')
t = (0:length(X)-1)/fs;
plot(t,X)
xlabel('Time(s)')

혼합된 신호에는 서로 다른 진폭과 주파수 값을 갖는 정현파가 포함되어 있습니다.

힐베르트 스펙트럼 플롯을 생성하려면 신호의 내재 모드 함수(IMF)가 필요합니다. 경험적 모드 분해를 수행하여 신호의 IMF와 잔차를 계산합니다. 신호가 매끄럽지 않기 때문에 'pchip'을 Interpolation 메서드로 지정합니다.

[imf,residual,info] = emd(X,'Interpolation','pchip');
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit  
      1      |        2     |     0.026352   |  SiftMaxRelativeTolerance
      2      |        2     |    0.0039573   |  SiftMaxRelativeTolerance
      3      |        1     |     0.024838   |  SiftMaxRelativeTolerance
      4      |        2     |      0.05929   |  SiftMaxRelativeTolerance
      5      |        2     |      0.11317   |  SiftMaxRelativeTolerance
      6      |        2     |      0.12599   |  SiftMaxRelativeTolerance
      7      |        2     |      0.13802   |  SiftMaxRelativeTolerance
      8      |        3     |      0.15937   |  SiftMaxRelativeTolerance
      9      |        2     |      0.15923   |  SiftMaxRelativeTolerance
The decomposition stopped because the number of extrema of the residual signal is less than 'MaxNumExtrema'.

명령 창에 생성된 테이블에는 생성된 각 IMF에 대한 선별 반복 횟수, 상대 허용오차, 선별 중지 기준이 나와 있습니다. 이 정보는 info에도 포함되어 있습니다. 'Display',0 이름 값 쌍을 추가하여 테이블을 숨길 수 있습니다.

경험적 모드 분해를 사용하여 얻은 imf 성분을 사용하여 힐베르트 스펙트럼 플롯을 생성합니다.

hht(imf,fs)

시간에 대한 주파수의 플롯은 IMF의 각 지점에서의 순시 에너지를 나타내는 세로 컬러바가 있는 희소 플롯입니다. 이 플롯은 혼합된 원래 신호에서 분해된 각 성분의 순시 주파수 스펙트럼을 나타냅니다. 플롯의 1초 시점에 주파수 변화가 뚜렷한 3개의 IMF가 표시됩니다.

이 예제에서는 뚜렷한 주파수 변화를 보이는 정현파로 구성된 비정상(Nonstationary) 연속 신호를 살펴보겠습니다. 비정상 연속 신호의 예에는 착암기의 진동이나 폭죽 소리가 있습니다.

비정상 신호 데이터와 샘플링 주파수 fs를 불러온 다음, 혼합된 정현파 신호를 시각화합니다.

load('sinusoidalSignalExampleData.mat','X','fs')
t = (0:length(X)-1)/fs;
plot(t,X)
xlabel('Time(s)')

혼합된 신호에는 서로 다른 진폭과 주파수 값을 갖는 정현파가 포함되어 있습니다.

힐베르트 스펙트럼 파라미터를 계산하려면 신호의 IMF가 필요합니다. 경험적 모드 분해를 수행하여 신호의 내재 모드 함수와 잔차를 계산합니다. 신호가 매끄럽지 않기 때문에 'pchip'을 Interpolation 메서드로 지정합니다.

[imf,residual,info] = emd(X,'Interpolation','pchip');
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit  
      1      |        2     |     0.026352   |  SiftMaxRelativeTolerance
      2      |        2     |    0.0039573   |  SiftMaxRelativeTolerance
      3      |        1     |     0.024838   |  SiftMaxRelativeTolerance
      4      |        2     |      0.05929   |  SiftMaxRelativeTolerance
      5      |        2     |      0.11317   |  SiftMaxRelativeTolerance
      6      |        2     |      0.12599   |  SiftMaxRelativeTolerance
      7      |        2     |      0.13802   |  SiftMaxRelativeTolerance
      8      |        3     |      0.15937   |  SiftMaxRelativeTolerance
      9      |        2     |      0.15923   |  SiftMaxRelativeTolerance
The decomposition stopped because the number of extrema of the residual signal is less than 'MaxNumExtrema'.

명령 창에 생성된 테이블에는 생성된 각 IMF에 대한 선별 반복 횟수, 상대 허용오차, 선별 중지 기준이 나와 있습니다. 이 정보는 info에도 포함되어 있습니다. Display0으로 지정하여 테이블을 숨길 수 있습니다.

힐베르트 스펙트럼 파라미터인 힐베르트 스펙트럼 hs, 주파수 벡터 fs, 시간 벡터 t, 순시 주파수 imfinsf, 순시 에너지 imfinse를 계산합니다.

[hs,f,t,imfinsf,imfinse] = hht(imf,fs);

계산된 힐베르트 스펙트럼 파라미터를 시간-주파수 분석과 신호 진단에 사용합니다.

입력 인수

모두 축소

내재 모드 함수로, 행렬 또는 timetable형으로 지정됩니다. imf는 극값 및 영점교차의 개수와 최대 하나만큼 차이 나는 신호로, 포락선이 0을 기준으로 대칭입니다. emd는 복잡한 신호를 분해한 다음, 힐베르트 스펙트럼 분석을 수행하는 데 필요한 유한개의 내재 모드 함수로 단순화하는 데 사용됩니다.

hhtimf의 각 열을 내재 모드 함수로 취급합니다. imf 계산 방법에 대한 자세한 내용은 emd를 참조하십시오.

샘플링 주파수로, 양의 스칼라로 지정됩니다. 샘플링 주파수 또는 샘플링 레이트는 단위 시간당 샘플 개수입니다.

fs가 제공되지 않으면 힐베르트 스펙트럼을 계산할 때 정규화 주파수 가 사용됩니다. imf가 타임테이블로 지정된 경우 이 인수에서 샘플링 시간이 추론됩니다.

플롯에서의 주파수 축 위치로, 'yaxis' 또는 'xaxis'로 지정됩니다. 플롯의 y축이나 x축에 주파수 데이터를 표시하려면 freqlocation을 각각 'yaxis' 또는 'xaxis'로 지정하십시오.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: 'FrequencyResolution',1

힐베르트 스펙트럼을 계산하기 위한 주파수 제한으로, 'FrequencyLimits'와 함께 1x2 정수 값 벡터가 쉼표로 구분되어 지정됩니다. FrequencyLimits는 Hz 단위로 지정됩니다.

주파수 제한을 이산화하기 위한 주파수 분해능으로, FrequencyResolution과 함께 양의 스칼라가 쉼표로 구분되어 지정됩니다.

FrequencyResolution을 Hz 단위로 지정합니다. 'FrequencyResolution'이 지정되지 않은 경우 (f_high-f_low)/100FrequencyLimits에서 추론됩니다. 여기서 f_highFrequencyLimits의 상한이고, f_low는 하한입니다.

힐베르트 스펙트럼의 최소 임계값으로, 'MinThreshold'와 함께 스칼라가 쉼표로 구분되어 지정됩니다.

MinThreshold10log10(hs)의 대응하는 요소가 MinThreshold보다 작은 경우 hs의 요소를 0으로 설정합니다.

출력 인수

모두 축소

신호의 힐베르트 스펙트럼으로, 희소 배열로 반환됩니다. 시간-주파수 분석이나 신호의 국소화된 특징을 확인하는 데 hs를 사용합니다.

신호의 주파수 벡터로, 숫자형 배열로 반환됩니다. hht는 주파수 벡터 f와 시간 벡터 t를 사용하여 힐베르트 스펙트럼 플롯을 생성합니다.

f는 수학적으로 다음과 같이 표시됩니다.

f = f_low:FrequencyResolution:f_high

신호의 시간 벡터로, 숫자형 배열 또는 duration형 배열로 반환됩니다. hht는 시간 벡터 t와 주파수 벡터 f를 사용하여 힐베르트 스펙트럼 플롯을 생성합니다.

t는 다음 형태로 반환됩니다.

  • 배열 - imf가 배열로 지정된 경우.

  • duration형 배열 - imf가 균일하게 샘플링된 timetable형으로 지정된 경우.

각 IMF의 순시 주파수로, 배열 또는 timetable형으로 반환됩니다.

insfimf와 같은 개수의 열을 가지며 다음 형태로 반환됩니다.

  • 배열 - imf가 배열로 지정된 경우.

  • timetable형 - imf가 균일하게 샘플링된 timetable형으로 지정된 경우.

각 IMF의 순시 에너지로, 배열 또는 timetable형으로 반환됩니다.

inseimf와 같은 개수의 열을 가지며 다음 형태로 반환됩니다.

  • 배열 - imf가 배열로 지정된 경우.

  • timetable형 - imf가 균일하게 샘플링된 timetable형으로 지정된 경우.

알고리즘

힐베르트-황 변환은 비정상(Nonstationary) 비선형 데이터의 시간-주파수 분석을 수행하는 데 유용합니다. 힐베르트-황 절차는 다음 단계로 구성됩니다.

  1. emd가 데이터 세트 x를 유한개의 내재 모드 함수로 분해합니다.

  2. 각 내재 모드 함수 xi에 대해 함수 hht가 다음을 수행합니다.

    1. hilbert를 사용하여 해석적 신호 zi(t)=xi(t)+jH{xi(t)}를 계산합니다. 여기서 H{xi}xi의 힐베르트 변환입니다.

    2. zizi(t)=ai(t)ejθi(t)으로 표현합니다. 여기서 ai(t)는 순시 진폭이고 θi(t)는 순시 위상입니다.

    3. 순시 에너지 |ai(t)|2과 순시 주파수 ωi(t)dθi(t)/dt를 계산합니다. 샘플 레이트가 주어진 경우 hhtωi(t)를 Hz 단위의 주파수로 변환합니다.

    4. 순시 에너지를 imfinse에 출력하고 순시 주파수를 imfinsf에 출력합니다.

  3. 출력 인수 없이 호출될 경우 hht는 진폭에 비례하는 색을 사용하여 신호의 에너지를 시간과 주파수의 함수로 플로팅합니다.

참고 문헌

[1] Huang, Norden E., and Samuel S. P. Shen. Hilbert-Huang Transform and Its Applications. Singapore: World Scientific, 2014.

[2] Huang, Norden E., Zhaohua Wu, Steven R. Long, Kenneth C. Arnold, Xianyao Chen, and Karin Blank. "On Instantaneous Frequency." Advances in Adaptive Data Analysis. Vol. 1, No. 2, 2009, pp. 177–229.

R2018a에 개발됨