hs = hht(IMFs)는 내재 모드 함수 IMFs에 의해 지정된 신호의 힐베르트 스펙트럼 hs를 반환합니다. hs는 시간에 따라 스펙트럼 성분이 변하는 혼성 신호로 구성된 신호를 분석하는 데 유용합니다. hht를 사용하여 신호에 대한 힐베르트 스펙트럼 분석을 수행함으로써 국소화된 특징을 확인할 수 있습니다.
가우스 변조 2차 처프를 생성합니다. 2kHz의 샘플 레이트와 2초의 신호 지속 기간을 지정합니다.
fs = 2000;
t = 0:1/fs:2-1/fs;
q = chirp(t-2,4,1/2,6,'quadratic',100,'convex').*exp(-4*(t-1).^2);
plot(t,q)
emd를 사용하여 내재 모드 함수(IMF)와 잔차를 시각화합니다.
emd(q)
신호의 IMF를 계산합니다. 'Display' 이름-값 쌍을 사용하여 각 IMF에 대한 선별 반복 횟수, 상대 허용오차, 선별 중지 기준을 보여주는 테이블을 출력합니다.
imf = emd(q,'Display',1);
Current IMF | #Sift Iter | Relative Tol | Stop Criterion Hit
1 | 2 | 0.0063952 | SiftMaxRelativeTolerance
2 | 2 | 0.1007 | SiftMaxRelativeTolerance
3 | 2 | 0.01189 | SiftMaxRelativeTolerance
4 | 2 | 0.0075124 | SiftMaxRelativeTolerance
Decomposition stopped because the number of extrema in the residual signal is less than the 'MaxNumExtrema' value.
계산된 IMF를 사용하여 2차 처프의 힐베르트 스펙트럼을 플로팅합니다. 주파수 범위를 0Hz ~ 20Hz로 제한합니다.
태평양 흰긴수염고래의 오디오 데이터를 4kHz로 샘플링한 파일을 불러옵니다. 이 파일은 코넬대 생물 음향학 연구 프로그램(Cornell University Bioacoustics Research Program)에서 관리하는 동물 소리 라이브러리에서 생성된 것입니다. 피치를 올려서 울음소리가 더 잘 들리도록 데이터의 시간 스케일을 1/10로 압축했습니다. 신호를 MATLAB® 타임테이블로 변환하고 플로팅합니다. 이 신호의 잡음은 네 가지 특징이 두드러집니다. 첫 번째 소리는 짧게 반복되는 소리이고 나머지 세 번의 소리는 긴 울음소리입니다.
신호의 처음 3개 IMF를 계산합니다. 'Display' 이름-값 쌍을 사용하여 각 IMF에 대한 선별 반복 횟수, 상대 허용오차, 선별 중지 기준을 보여주는 테이블을 출력합니다.
imf = emd(whale,'MaxNumIMF',3,'Display',1);
Current IMF | #Sift Iter | Relative Tol | Stop Criterion Hit
1 | 1 | 0.13523 | SiftMaxRelativeTolerance
2 | 2 | 0.030198 | SiftMaxRelativeTolerance
3 | 2 | 0.01908 | SiftMaxRelativeTolerance
Decomposition stopped because maximum number of intrinsic mode functions was extracted.
계산된 IMF를 사용하여 신호의 힐베르트 스펙트럼을 플로팅합니다. 주파수 범위를 0Hz ~ 1400Hz로 제한합니다.
hht(imf,'FrequencyLimits',[0 1400])
동일한 주파수 범위에 대해 힐베르트 스펙트럼을 계산합니다. 짧게 반복되는 소리와 긴 울음소리의 힐베르트 스펙트럼을 메시 플롯으로 시각화합니다.
emd (Signal Processing Toolbox)를 사용하여 정상적인 베어링 신호의 경험적 모드 분해를 수행합니다. 처음 5개의 내재 모드 함수(IMF)를 계산합니다. 'Display' 이름-값 인수를 사용하여 각 IMF에 대한 선별 반복 횟수, 상대 허용오차, 선별 중지 기준을 보여주는 테이블을 출력합니다.
imfGood = emd(yGood,MaxNumIMF=5,Display=1);
Current IMF | #Sift Iter | Relative Tol | Stop Criterion Hit
1 | 3 | 0.017132 | SiftMaxRelativeTolerance
2 | 3 | 0.12694 | SiftMaxRelativeTolerance
3 | 6 | 0.14582 | SiftMaxRelativeTolerance
4 | 1 | 0.011082 | SiftMaxRelativeTolerance
5 | 2 | 0.03463 | SiftMaxRelativeTolerance
Decomposition stopped because maximum number of intrinsic mode functions was extracted.
출력 인수 없이 emd를 사용하여 첫 3개 IMF와 잔차를 시각화합니다.
emd(yGood,MaxNumIMF=5)
결함 있는 베어링 신호의 IMF를 계산하고 시각화합니다. 첫 번째 경험적 모드에서 고주파수 영향이 나타납니다. 이 고주파수 모드는 마모가 진행되면서 에너지가 늘어납니다.
imfBad = emd(yBad,MaxNumIMF=5,Display=1);
Current IMF | #Sift Iter | Relative Tol | Stop Criterion Hit
1 | 2 | 0.041274 | SiftMaxRelativeTolerance
2 | 3 | 0.16695 | SiftMaxRelativeTolerance
3 | 3 | 0.18428 | SiftMaxRelativeTolerance
4 | 1 | 0.037177 | SiftMaxRelativeTolerance
5 | 2 | 0.095861 | SiftMaxRelativeTolerance
Decomposition stopped because maximum number of intrinsic mode functions was extracted.
emd(yBad,MaxNumIMF=5)
결함 있는 베어링 신호의 첫 번째 경험적 모드의 힐베르트 스펙트럼을 플로팅합니다. 첫 번째 모드는 고주파수 충격의 효과를 캡처합니다. 베어링 마모가 진행되면 충격 에너지가 커집니다.
figure
hht(imfBad(:,1),fs)
세 번째 모드의 힐베르트 스펙트럼은 진동 신호의 공명을 보여줍니다. 주파수 범위를 0Hz ~ 100Hz로 제한합니다.
hht(imfBad(:,3),fs,FrequencyLimits=[0 100])
비교를 위해 정상인 베어링 신호의 첫 번째 및 세 번째 모드의 힐베르트 스펙트럼을 플로팅합니다.
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고Name을 따옴표로 묶으십시오.
예: 'FrequencyResolution',1
힐베르트 스펙트럼을 계산하기 위한 주파수 제한으로, 1×2 정수 값 벡터로 지정됩니다. FrequencyLimits는 Hz 단위로 지정됩니다.
주파수 제한을 이산화하기 위한 주파수 분해능으로, 양의 스칼라로 지정됩니다. FrequencyResolution은 Hz 단위로 지정됩니다. FrequencyResolution이 지정되지 않은 경우 (fhigh-flow)/100의 값은 FrequencyLimits에서 추론됩니다. 여기서 fhigh는 FrequencyLimits의 상한이고, flow는 하한입니다.
힐베르트 스펙트럼의 최소 임계값으로, 스칼라로 지정됩니다. MinThreshold는 의 대응하는 요소가 MinThreshold보다 작은 경우 hs의 요소를 0으로 설정합니다.
출력 인수 없이 호출될 경우 hht는 진폭에 비례하는 색을 사용하여 신호의 에너지를 시간과 주파수의 함수로 플로팅합니다.
참고 문헌
[1] Huang, Norden E, and Samuel S P Shen. Hilbert–Huang Transform and Its Applications. 2nd ed. Vol. 16. Interdisciplinary Mathematical Sciences. WORLD SCIENTIFIC, 2014. https://doi.org/10.1142/8804.
[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 01, no. 02 (April 2009): 177–229. https://doi.org/10.1142/S1793536909000096.
순시 주파수 추정에 사용되는 비닝 알고리즘의 특성으로 인해 MATLAB® 코드를 사용하여 얻은 결과와 생성된 C/C++ 코드를 사용하여 얻은 결과 사이에 불일치가 있을 수 있습니다. 이러한 불일치는 주파수 추정의 OBO(off-by-one, 1차이) 차이로 인해 발생합니다.
hht 함수는 GPU 배열 입력값을 지원하지만 다음과 같은 사용법 관련 참고 및 제한 사항이 있습니다.
순시 주파수 추정에 사용되는 비닝 알고리즘의 특성으로 인해 CPU에서 얻은 결과와 GPU에서 얻은 결과 사이에 불일치가 있을 수 있습니다. 이러한 불일치는 주파수 추정의 OBO(off-by-one, 1차이) 차이로 인해 발생합니다.