emd
경험적 모드 분해
설명
[___] = emd(___,
는 하나 이상의 Name,Value
)Name,Value
쌍 인수로 지정된 추가 옵션을 사용하여 경험적 모드 분해를 수행합니다.
emd(___)
는 동일한 Figure에 원래 신호, IMF, 잔차 신호를 플로팅합니다.
예제
경험적 모드 분해 수행 및 신호의 힐베르트 스펙트럼 시각화하기
뚜렷한 주파수 변화를 보이는 정현파로 구성된 비정상 연속 신호를 불러오고 시각화합니다. 비정상 연속 신호의 예에는 착암기의 진동이나 폭죽 소리가 있습니다. 이 신호는 fs
의 레이트로 샘플링됩니다.
load("sinusoidalSignalExampleData.mat","X","fs") t = (0:length(X)-1)/fs; plot(t,X) xlabel("Time (s)")
혼성 신호에는 서로 다른 진폭과 주파수 값을 갖는 정현파가 포함되어 있습니다.
힐베르트 스펙트럼 플롯을 생성하려면 신호의 내재 모드 함수(IMF)가 필요합니다. 경험적 모드 분해를 수행하여 신호의 IMF와 잔차를 계산합니다. 신호가 매끄럽지 않기 때문에 보간 방법으로 'pchip
'을 지정합니다.
[imf,residual,info] = emd(X,Interpolation="pchip");
명령 창에 생성된 테이블에는 생성된 각 IMF에 대한 선별 반복 횟수, 상대 허용오차, 선별 중지 기준이 나와 있습니다. 이 정보는 info
에도 포함되어 있습니다. 'Display',0
이름 값 쌍을 추가하여 테이블을 숨길 수 있습니다.
경험적 모드 분해를 사용하여 얻은 imf
성분을 사용하여 힐베르트 스펙트럼 플롯을 생성합니다.
hht(imf,fs)
시간에 대한 주파수의 플롯은 IMF의 각 지점에서의 순시 에너지를 나타내는 세로 컬러바가 있는 희소 플롯입니다. 이 플롯은 원래의 혼성 신호에서 분해된 각 성분의 순시 주파수 스펙트럼을 나타냅니다. 플롯의 1초 시점에 주파수 변화가 뚜렷한 3개의 IMF가 표시됩니다.
정현파 내재 모드 함수의 영점교차 및 극값
다음 삼각 함수 항등식은 동일한 물리 신호에 대한 서로 다른 2가지 표현을 보여줍니다.
.
2개의 정현파 s
와 z
를 생성합니다. s
는 세 사인파의 합이고, z
는 변조된 진폭의 단일 사인파입니다. 두 신호 간 차분의 무한대 노름을 계산하여 두 신호가 같음을 확인합니다.
t = 0:1e-3:10; omega1 = 2*pi*100; omega2 = 2*pi*20; s = 0.25*cos((omega1-omega2)*t) + ... 2.5*cos(omega1*t) + ... 0.25*cos((omega1+omega2)*t); z = (2+cos(omega2/2*t).^2).*cos(omega1*t); norm(s-z,Inf)
ans = 3.2729e-13
정현파를 플로팅하고 2초 지점에서 시작하는 1초 구간을 선택합니다.
plot(t,[s' z']) xlim([2 3]) xlabel('Time (s)') ylabel('Signal')
이 신호의 스펙트로그램을 계산합니다. 스펙트로그램은 서로 다른 3가지 정현파 성분을 보여줍니다. 푸리에 해석에서는 신호를 사인파가 중첩된 것으로 인식합니다.
pspectrum(s,1000,'spectrogram','TimeResolution',4)
emd
를 사용하여 신호의 내재 모드 함수(IMF) 및 추가 진단 정보를 계산합니다. 이 함수는 기본적으로 각 IMF에 대한 선별 반복 횟수, 상대 허용오차, 선별 중지 기준을 보여주는 표를 출력합니다. 경험적 모드 분해에서는 이 신호를 z
로 인식합니다.
[imf,~,info] = emd(s);
영점교차의 개수와 국소 극값은 최대 1만큼 차이가 납니다. 이는 신호가 IMF가 되는 데 필요한 조건을 충족합니다.
info.NumZerocrossing - info.NumExtrema
ans = 1
IMF를 플로팅하고 2초 지점에서 시작하는 0.5초 구간을 선택합니다. emd
가 신호를 변조된 진폭으로 인식하기 때문에 IMF는 AM 신호입니다.
plot(t,imf) xlim([2 2.5]) xlabel('Time (s)') ylabel('IMF')
진동 신호의 내재 모드 함수 계산
손상된 베어링의 진동 신호를 시뮬레이션합니다. 신호의 IMF를 시각화하고 결함이 있는지 찾아보기 위해 경험적 모드 분해를 수행합니다.
베어링의 피치 직경은 12cm이며 8개의 구름 요소가 있습니다. 각 구름 요소의 지름은 2cm입니다. 내륜이 초당 25 사이클로 구동되는 동안 외륜은 고정 상태로 유지됩니다. 가속도계가 10kHz로 베어링 진동을 샘플링합니다.
fs = 10000; f0 = 25; n = 8; d = 0.02; p = 0.12;
정상적인 베어링의 진동 신호에는 여러 차수의 구동 주파수가 포함되어 있습니다.
t = 0:1/fs:10-1/fs; a = 0.2*[1 0.5 0.2 0.1 0.05]; f = f0*[1 2 3 4 5]; yHealthy = a*sin(2*pi*f'.*t);
측정 과정의 중간에 베어링 진동에 공명이 가해집니다.
yHealthy = (1+1./(1+linspace(-10,10,length(yHealthy)).^4)).*yHealthy;
공명으로 인해 베어링의 외륜에 결함이 생겨 점점 더 마모됩니다. 이 결함 때문에 베어링의 외륜 통과 주파수(ball pass frequency outer race, BPFO)에서 일련의 충격이 발생합니다.
은 구동 속도, 은 구름 요소의 수, 는 구름 요소의 직경, 는 베어링의 피치 직경, 는 베어링 접촉각입니다. 15°의 접촉각을 가정하고 BPFO를 계산합니다.
ca = 15; bpfo = n*f0/2*(1-d/p*cosd(ca));
pulstran
함수를 사용하여 충격을 5밀리초 정현파로 구성된 주기적 열로 모델링합니다. 각 3kHz 정현파에는 플랫 탑 윈도우가 적용됩니다. 베어링 진동 신호에 점진적 마모를 적용하기 위해 멱법칙을 사용합니다.
fImpact = 3000; tImpact = 0:1/fs:5e-3-1/fs; wImpact = flattopwin(length(tImpact))'/10; xImpact = sin(2*pi*fImpact*tImpact).*wImpact; tx = 0:1/bpfo:t(end); tx = [tx; 1.3.^tx-2]; nWear = 49000; nSamples = 100000; yImpact = pulstran(t,tx',xImpact,fs)/5; yImpact = [zeros(1,nWear) yImpact(1,(nWear+1):nSamples)];
정상적인 신호에 충격을 더하여 BPFO 진동 신호를 생성합니다. 신호를 플로팅하고 5.0초 지점에서 시작하는 0.3초 구간을 선택합니다.
yBPFO = yImpact + yHealthy; xLimLeft = 5.0; xLimRight = 5.3; yMin = -0.6; yMax = 0.6; plot(t,yBPFO) hold on [limLeft,limRight] = meshgrid([xLimLeft xLimRight],[yMin yMax]); plot(limLeft,limRight,"--") hold off xlabel("Time (seconds)") ylabel("Amplitude")
충격의 효과를 시각화하기 위해 선택된 구간을 확대합니다.
xlim([xLimLeft xLimRight])
백색 가우스 잡음을 신호에 추가합니다. 잡음 분산을 로 지정합니다.
rn = 150; yGood = yHealthy + randn(size(yHealthy))/rn; yBad = yBPFO + randn(size(yHealthy))/rn; plot(t,yGood,t,yBad) xlim([xLimLeft xLimRight]) legend("Healthy","Damaged") xlabel("Time (seconds)") ylabel("Amplitude")
emd
를 사용하여 정상적인 베어링 신호의 경험적 모드 분해를 수행합니다. 처음 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개 모드와 잔차를 시각화합니다.
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)
분석의 다음 단계는 추출된 IMF의 힐베르트 스펙트럼 계산입니다. 자세한 내용은 진동 신호의 힐베르트 스펙트럼 계산 예제를 참조하십시오.
신호의 잔차와 내재 모드 함수 시각화하기
뚜렷한 주파수 변화를 보이는 정현파로 구성된 비정상 연속 신호를 불러오고 시각화합니다. 비정상 연속 신호의 예에는 착암기의 진동이나 폭죽 소리가 있습니다. 이 신호는 fs
의 레이트로 샘플링됩니다.
load("sinusoidalSignalExampleData.mat","X","fs") t = (0:length(X)-1)/fs; plot(t,X) xlabel("Time(s)")
혼성 신호에는 서로 다른 진폭과 주파수 값을 갖는 정현파가 포함되어 있습니다.
경험적 모드 분해를 수행하여 신호의 내재 모드 함수와 잔차를 플로팅합니다. 신호가 매끄럽지 않기 때문에 보간 방법으로 "pchip"
을 지정합니다.
emd(X,Interpolation="pchip",Display=1)
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 Decomposition stopped because the number of extrema in the residual signal is less than the 'MaxNumExtrema' value.
emd
는 원래 신호, 처음 3개의 IMF, 잔차가 포함된 대화형 Figure를 생성합니다. 명령 창에 생성된 테이블에는 생성된 각 IMF에 대한 선별 반복 횟수, 상대 허용오차, 선별 중지 기준이 나와 있습니다. Display
이름-값 인수를 제거하거나 이 이름-값 인수를 0
으로 지정하여 테이블을 숨길 수 있습니다.
Figure에서 흰색 영역을 마우스 오른쪽 버튼으로 클릭하여, IMF 선택기 창을 엽니다. IMF 선택기를 사용하여 생성된 IMF, 원래 신호, 잔차를 선택적으로 볼 수 있습니다.
표시할 IMF를 목록에서 선택합니다. Figure에 원래 신호와 잔차를 표시할지 여부를 선택합니다.
이제, 선택한 IMF가 Figure에 표시됩니다.
Figure를 사용하여, 원래 신호에서 분해된 각 성분을 잔차와 함께 시각화할 수 있습니다. 잔차는 총 IMF 개수에 대해 계산되며, IMF 선택기 창에서 선택한 IMF에 따라 변경되지 않습니다.
입력 인수
x
— 시간 영역 신호
벡터 | timetable형
시간 영역 신호로, 실수 값 벡터로 지정되거나 열이 1개인 단일 변수 타임테이블로 지정됩니다. x
가 타임테이블인 경우 x
는 증가하는 유한한 행 시간값을 포함해야 합니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: 'MaxNumIMF',5
SiftRelativeTolerance
— 코시 유형 수렴 기준
0.2
(디폴트 값) | 양의 스칼라
코시(Cauchy) 유형 수렴 기준으로, 'SiftRelativeTolerance'
와 함께 양의 스칼라가 쉼표로 구분되어 지정됩니다. SiftRelativeTolerance
는 선별 중지 기준 중 하나입니다. 즉, 현재 상대 허용오차가 SiftRelativeTolerance
보다 작으면 선별이 중지됩니다. 자세한 내용은 선별 상대 허용오차 항목을 참조하십시오.
SiftMaxIterations
— 선별 반복의 최대 횟수
100
(디폴트 값) | 양의 정수 스칼라
선별 반복의 최대 횟수로, 'SiftMaxIterations'
와 함께 양의 정수 스칼라가 쉼표로 구분되어 지정됩니다. SiftMaxIterations
는 선별 중지 기준 중 하나입니다. 즉, 현재 반복 횟수가 SiftMaxIterations
보다 크면 선별이 중지됩니다.
SiftMaxIterations
는 양의 정수로만 지정할 수 있습니다.
MaxNumIMF
— 추출된 최대 IMF 개수
10
(디폴트 값) | 양의 정수 스칼라
추출된 최대 IMF 개수로, 'MaxNumIMF'
와 함께 양의 정수 스칼라가 쉼표로 구분되어 지정됩니다. MaxNumIMF
는 분해 중지 기준 중 하나입니다. 즉, 생성된 IMF 개수가 MaxNumIMF
와 같으면 분해가 중지됩니다.
MaxNumIMF
는 양의 정수로만 지정할 수 있습니다.
MaxNumExtrema
— 잔차 신호 극값의 최대 개수
1
(디폴트 값) | 양의 정수 스칼라
잔차 신호 극값의 최대 개수로, 'MaxNumExtrema'
와 함께 양의 정수 스칼라가 쉼표로 구분되어 지정됩니다. MaxNumExtrema
는 분해 중지 기준 중 하나입니다. 즉, 극값 개수가 MaxNumExtrema
보다 적으면 분해가 중지됩니다.
MaxNumExtrema
는 양의 정수로만 지정할 수 있습니다.
MaxEnergyRatio
— 신호 대 잔차 에너지 비
20
(디폴트 값) | 스칼라
신호 대 잔차 에너지 비로, 'MaxEnergyRatio'
와 함께 스칼라가 쉼표로 구분되어 지정됩니다. MaxEnergyRatio
는 선별 시작 시의 신호 에너지 대 평균 포락선 에너지 비입니다. MaxEnergyRatio
는 분해 중지 기준 중 하나로, 현재 에너지 비가 MaxEnergyRatio
보다 크면 분해가 중지됩니다. 자세한 내용은 에너지 비 항목을 참조하십시오.
Interpolation
— 포락선 생성을 위한 보간 방법
'spline'
(디폴트 값) | 'pchip'
포락선 생성을 위한 보간 방법으로, 'Interpolation'
과 함께 'spline'
또는 'pchip'
이 쉼표로 구분되어 지정됩니다.
Interpolation
은 다음과 같이 지정합니다.
'spline'
-x
가 평활화 신호인 경우'pchip'
-x
가 평활화 신호가 아닌 경우
'spline'
보간 방법은 3차 스플라인을 사용하는 반면, 'pchip'
은 조각별 3차 에르미트 보간 다항식을 사용합니다.
Display
— 명령 창에서 정보 표시 전환
0 (디폴트 값) | 1
명령 창에서의 정보 표시 전환으로, 'Display'
와 함께 0 또는 1이 쉼표로 구분되어 지정됩니다. 명령 창에 생성된 테이블에는 생성된 각 IMF에 대한 선별 반복 횟수, 상대 허용오차, 선별 중지 기준이 나와 있습니다. 테이블을 표시하려면 Display
를 1로 지정하고 테이블을 숨기려면 0으로 지정하십시오.
출력 인수
residual
— 신호의 잔차
열 벡터 | 단일 데이터 열 타임테이블
신호의 잔차로, 열 벡터 또는 데이터 열이 하나인 타임테이블로 반환됩니다. residual
은 원래 신호 x
에서 emd
로 분해되지 않은 부분을 나타냅니다.
residual
은 다음 형태로 반환됩니다.
x
가 벡터인 경우 열 벡터.x
가 데이터 열이 하나인 타임테이블인 경우 단일 데이터 열의 타임테이블.
info
— 진단에 대한 추가 정보
구조체
진단에 대한 추가 정보로, 다음 필드가 있는 구조체로 반환됩니다.
NumIMF
— 추출된 IMF 개수NumIMF
는 1부터 N까지의 벡터로, 여기서 N은 IMF의 개수입니다. 추출된 IMF가 없으면NumIMF
는 비어 있습니다.NumExtrema
— 각 IMF의 극값 개수NumExtrema
는 IMF 개수와 길이가 같은 벡터입니다.NumExtrema
의 k번째 요소는 k번째 IMF에 있는 극값의 개수입니다. 추출된 IMF가 없으면NumExtrema
는 비어 있습니다.NumZerocrossing
— 각 IMF의 영점교차 개수각 IMF의 영점교차 개수입니다.
NumZerocrossing
은 IMF의 개수와 길이가 같은 벡터입니다.NumZerocrossing
의 k번째 요소는 k번째 IMF에 있는 영점교차의 개수입니다. 추출된 IMF가 없으면NumZerocrossing
은 비어 있습니다.NumSifting
— 각 IMF를 추출하는 데 사용된 선별 반복 횟수NumSifting
은 IMF 개수와 길이가 같은 벡터입니다.NumSifting
의 k번째 요소는 k번째 IMF를 추출하는 데 사용된 선별 반복 횟수입니다. 추출된 IMF가 없으면NumSifting
은 비어 있습니다.MeanEnvelopeEnergy
— 각 IMF에 대해 획득한 상부 포락선과 하부 포락선의 평균이 갖는 에너지UE
가 상부 포락선이고LE
가 하부 포락선이면MeanEnvelopeEnergy
는mean(((LE+UL)/2).^2)
입니다.MeanEnvelopeEnergy
는 IMF의 개수와 길이가 같은 벡터입니다.MeanEnvelopeEnergy
의 k번째 요소는 k번째 IMF의 평균 포락선 에너지입니다. 추출된 IMF가 없으면MeanEnvelopeEnergy
는 비어 있습니다.RelativeTolerance
— 각 IMF의 잔차의 최종 상대 허용오차상대 허용오차는 i번째 선별 단계 잔차의 2-노름 제곱 값에 대한 이전 선별 단계 잔차와 현재 선별 단계 잔차의 차이의 2-노름 제곱 값의 비로 정의됩니다. 선별 과정은
RelativeTolerance
가SiftRelativeTolerance
보다 작은 경우 중지됩니다. 자세한 내용은 선별 상대 허용오차 항목을 참조하십시오.RelativeTolerance
는 IMF의 개수와 길이가 같은 벡터입니다.RelativeTolerance
의 k번째 요소는 k번째 IMF에 대해 구한 최종 상대 허용오차입니다. 추출된 IMF가 없으면RelativeTolerance
는 비어 있습니다.
세부 정보
경험적 모드 분해
경험적 모드 분해(EMD) 알고리즘은 반복 과정을 통해 신호 x(t)를 내재 모드 함수(IMF)와 잔차로 분해합니다. 알고리즘의 핵심 컴포넌트는 함수 x(t)를 선별(sifting)하여 새 함수 Y(t)를 구하는 것입니다.
먼저 x(t)의 국소 최솟값과 국소 최댓값을 구합니다.
그런 다음 국소 극값을 사용하여 x(t)의 하부 포락선 s−(t)와 상부 포락선 s+(t)를 생성합니다. 포락선의 평균 m(t)를 구성합니다.
x(t)에서 평균을 빼서 잔차 Y(t) = x(t) − m(t)를 구합니다.
분해는 다음과 같이 진행됩니다.
먼저 r0(t) = x(t)라고 합시다. 여기서 x(t)는 초기 신호입니다.i = 0이라고 합시다.
선별에 앞서 ri(t)를 확인합니다.
ri(t)의 국소 극값의 총 개수(TN)를 구합니다.
ri(t)의 에너지 비(ER)를 구합니다(에너지 비 참조).
(ER >
MaxEnergyRatio
)이거나 (TN <MaxNumExtrema
)이거나 (IMF의 개수 >MaxNumIMF
)이면 분해를 중지합니다.ri,Prev(t) = ri(t)라고 합시다.
ri,Prev(t)를 선별하여 ri,Cur(t)를 구합니다.
ri,Cur(t)를 확인합니다.
ri,Cur(t)의 상대 허용오차(RT)를 구합니다(선별 상대 허용오차 참조).
현재 선별 반복 횟수(IN)를 구합니다.
(RT <
SiftRelativeTolerance
)이거나 (IN >SiftMaxIterations
)이면 선별을 중지합니다. IMF IMFi(t) = ri,Cur(t)를 구했습니다. 구하지 못했다면 ri,Prev(t) = ri,Cur(t)로 하고 5단계로 이동합니다.ri+1(t) = ri(t) − ri,Cur(t)라고 합시다.
i = i + 1라고 합시다. 2단계로 돌아갑니다.
내재 모드 함수
EMD 알고리즘은 반복 선별 과정을 통해 신호 x(t)를 다음과 같이 IMF imfi(t)와 잔차 rN(t)로 분해합니다.
황(Huang) 등이 처음 소개한[1] IMF는 다음과 같은 두 가지 특성을 갖는 함수로 정의되었습니다.
국소 극값의 개수(국소 최솟값과 국소 최댓값의 총 개수)와 영점교차의 개수는 최대 1만큼 차이가 납니다.
국소 극값으로부터 생성된 상부 포락선과 하부 포락선의 평균값은 0입니다.
그러나 [4]에서 설명하는 바와 같이, 엄격한 IMF를 구할 때까지 선별하면 물리적으로 유의미하지 않은 IMF를 얻게 될 수 있습니다. 구체적으로 말해, 영점교차의 개수와 국소 극값의 개수가 최대 1만큼 차이가 날 때까지 선별한다면 순수한 톤에 가까운 IMF, 즉 푸리에 기저에 대한 사영으로 얻는 것과 매우 비슷한 함수를 얻게 될 수 있습니다. 이는 EMD에서 피하려 하는 바로 그 상황으로, EMD가 물리적 유의미성을 갖는 AM-FM 변조된 성분을 선호하는 이유입니다.
참고 문헌 [4]에서는 물리적으로 유의미한 결과를 얻기 위한 옵션을 제안합니다. emd
함수는 코시 유형 중지 기준인 선별 상대 허용오차 방법을 사용하여 원래의 IMF 정의를 완화합니다. emd
함수는 반복을 통해 자연적인 AM-FM 모드를 추출합니다. 생성된 IMF는 국소 극값-영점교차 기준을 충족하지 못할 수 있습니다. 정현파 내재 모드 함수의 영점교차 및 극값 항목을 참조하십시오.
선별 상대 허용오차
선별 상대 허용오차는 [4]에서 제안하는 코시 유형 중지 기준입니다. 현재 상대 허용오차가 SiftRelativeTolerance
보다 작으면 선별 과정이 중지됩니다. 현재 상대 허용오차는 다음과 같이 정의됩니다.
코시 기준은 영점교차와 국소 극값의 개수를 직접 세지 않기 때문에, 분해에서 반환되는 IMF가 내재 모드 함수의 엄격한 정의를 충족하지 않을 가능성이 있습니다. 이 경우 SiftRelativeTolerance
의 값을 디폴트 값에서 줄여 볼 수 있습니다. 중지 기준에 대한 자세한 내용은 [4] 항목을 참조하십시오. 참고 문헌에서는 경험적 모드 분해에서 엄격하게 정의된 IMF를 고집하는 것의 이점과 단점도 설명합니다.
에너지 비
에너지 비는 선별 시작 시의 신호 에너지 대 평균 포락선 에너지의 비입니다[2]. 현재 에너지 비가 MaxEnergyRatio
보다 크면 분해가 중지됩니다. i번째 IMF의 에너지 비는 다음과 같이 정의됩니다.
참고 문헌
[1] Huang, Norden E., Zheng Shen, Steven R. Long, Manli C. Wu, Hsing H. Shih, Quanan Zheng, Nai-Chyuan Yen, Chi Chao Tung, and Henry H. Liu. “The Empirical Mode Decomposition and the Hilbert Spectrum for Nonlinear and Non-Stationary Time Series Analysis.” Proceedings of the Royal Society of London. Series A: Mathematical, Physical and Engineering Sciences 454, no. 1971 (March 8, 1998): 903–95. https://doi.org/10.1098/rspa.1998.0193.
[2] Rato, R.T., M.D. Ortigueira, and A.G. Batista. “On the HHT, Its Problems, and Some Solutions.” Mechanical Systems and Signal Processing 22, no. 6 (August 2008): 1374–94. https://doi.org/10.1016/j.ymssp.2007.11.028.
[3] Rilling, Gabriel, Patrick Flandrin, and Paulo Gonçalves. "On Empirical Mode Decomposition and Its Algorithms." IEEE-EURASIP Workshop on Nonlinear Signal and Image Processing 2003. NSIP-03. Grado, Italy. 8–11.
[4] Wang, Gang, Xian-Yao Chen, Fang-Li Qiao, Zhaohua Wu, and Norden E. Huang. “On Intrinsic Mode Function.” Advances in Adaptive Data Analysis 02, no. 03 (July 2010): 277–93. https://doi.org/10.1142/S1793536910000549.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
코드 생성에는 타임테이블이 지원되지 않습니다.
'Interpolation'
이름-값 쌍을 사용하여 지정되는 보간 방법을 제공할 경우 그 값은 컴파일타임 상수여야 합니다.
버전 내역
R2018a에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)