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는 10 log10(hs)의 대응하는 요소가 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차이) 차이로 인해 발생합니다.
C/C++ 코드 생성 섹션의 사용법 관련 참고 및 제한 사항을 참조하십시오. GPU 코드 생성에도 동일한 사용법 관련 참고 및 제한 사항이 적용됩니다.
hht 함수는 GPU 배열 입력값을 지원하지만 다음과 같은 사용법 관련 참고 및 제한 사항이 있습니다.
순시 주파수 추정에 사용되는 비닝 알고리즘의 특성으로 인해 CPU에서 얻은 결과와 GPU에서 얻은 결과 사이에 불일치가 있을 수 있습니다. 이러한 불일치는 주파수 추정의 OBO(off-by-one, 1차이) 차이로 인해 발생합니다.